我们以一个例子为例,来介绍一下Karatsuba大数乘法的基本原理。
题目:写一个乘法器,它可以计算两个32bit无符号数a,b的乘积。
针对这个问题,我们当然可以直接通过out<=a*b来实现,但是这种实现方式,需要在一个周期内计算一个32bit的乘法,当频率很高时,显然会成为整个系统的瓶颈。为此,我们将32bit乘法进行拆分,以期望提高时钟频率:
设a的高16位为ah,低16位为al,b的高16位为bh,低16位为bl,则有
a ∗ b = ( a h ∗ 2 16 + a l ) ( b h