算数运算整理(二)

3 乘法运算

3.1 无符号数乘法

n位无符号数间乘法可以看作是循环n次的加法运算,因此可以用以下的硬件结构实现:
cheng
如果乘数的最低有效位为1,则将被乘数加在积上,否则,进入下一步。在下一步中进行被乘数的左移和乘数的右移。这一步骤需要重复32次,计算流程如下所示:
cheng11
这个乘法器可以进一步优化,节约占用的硬件资源数,优化后的乘法器如下所示:
cheng12
一种无符号阵列乘法器如下图所示,这样的阵列加法器由于需要进位信号逐层传递,因此具有较大的门延迟。
![111](https://img-blog.csdnimg.cn/2021022009541833.PNG #pic_center =x700)

一种并行化的方法是将32个加法器组织成一个并行树,这样只需要等待 log ⁡ 2 32 \log_232 log232,即5次32位加法的时间就能得到乘法的结果。
shu

3.2 原码乘法

原码乘法时,将符号位和数值位分别进行运算,符号位取异或得到积的符号位,数值位按照3.1中的无符号数乘法进行计算即可。

3.3 补码乘法

3.3.1 Booth乘法
  • 计算过程
    (1)参加运算的数都是补码表示的,符号位一同参与运算,得到的结果也是补码数。
    (2)乘数Y的末尾增设一位附加位 Y − 1 Y_{-1} Y1,初始值为0。部分积的初始值为0。
    (3)根据乘数Y的最低两位 Y 0 Y − 1 Y_0 Y_{-1} Y0Y1的值,进行相应的操作。具体操作如下表所示。其中 − X -X X是通过 + [ − X ] 补 +[-X]_补 +[X]来实现的。
    (4)将过程(3)重复n遍,最后得到的部分积就是运算结果。
    booth

  • 工作原理
    通过观察3.1中的乘法计算过程,可以发现二进制乘法器在处理0时,除了移位之外,无需执行任何其他操作。
    考虑一个正乘法器,例如“00111110”,乘积为:
    M × 00111110 = M × ( 2 5 + 2 4 + 2 3 + 2 2 + 2 1 ) = M × ( 2 6 − 2 1 ) = M × 62 M\times 00111110 = M \times (2^5 + 2^4 + 2^3 + 2^2 + 2^1) = M \times (2^6 - 2^1) = M \times 62 M×00111110=M×(25+24+23+22+21)=M×(2621)=M×62
    实际上,可以证明任何二进制数中任何连续1序列,都可以分解为两个二进制数之差:
    ( … 0 1 … 1 ⏞ n 0 …   ) 2 ≡ ( … 1 0 … 0 ⏞ n 0 …   ) 2 ≡ ( … 0 0 … 1 ⏞ n 0 …   ) 2 (\dots 0 \overbrace {1\dots 1}^n 0 \dots)_2 \equiv (\dots 1 \overbrace {0\dots 0}^n 0 \dots)_2 \equiv (\dots 0 \overbrace {0\dots 1}^n 0 \dots)_2 (011 n0)2(100

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值