Booth算法初见

研究乘法器的时候看到了Booth算法,搞了半天感觉有一点明白了。分享一下经验。

根据常规的二进制乘法来说 一般是列竖式

可见乘数的1有几个则需要进行几次加法运算。如果有n个1,就需要进行n次加法。如110010*111111

我们可以明显发现111_111=1000_000 - 000_001

所以让110010先乘1000_000 再减去110010*000_001 就可以得到想要的结果。

在booth算法里,检测相邻两位的变化,即是检索相邻1的过程。只需在多个1的上一位减去被乘数,在多个1的下一位加上被乘数,即可实现乘法运算。

这种算法的优点在于可以计算有符号数。

于是我产生了疑问,在booth算法中,如果1不是相领出现的,那么会不会比原来更加复杂呢。

思考了一下

如乘数为10010101.在计算加码的时候产生移位8次,其中 7次相加相减操作,若直接计算则为进行8次移位,其中4次移位并相加。

感觉好像确实提高了计算次数,目前还不太明白这种方式在哪里提高了效率。好像只有特殊情况提高效率?

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值