回 帖 发 新 帖 刷新版面

主题:进来有分加啊!

用位运算来实现两个字节类型的无符号数相乘的原理是什么啊?
   他提示的这个原理:先选择一个作为乘数,一个作为被乘数,然后将被乘数左移一位后取出最高位,判断其值,如果为1,则在结果寄存器中加上乘数的值,然后左移一位,如果为0,则直接左移一位,重复8次,就实现了两个数的手工相乘。
到底说的是什么意思啊?
这样怎么能实现呢?
高手给解释一下。

回复列表 (共1个回复)

沙发

首先应该说明一点是任何的乘法都可以转换为加法,我举个例子:
3×4=12,同时我们可以看成:
3+3+3+3=12,现在你数数3的个数,刚好是4个,也就是说任何的乘法都可以看作是连续的加法运算。
3的二进制数为 0000 0011,现在进行左移,原来是4,现在左移了两次,也就是4+4+4=12。基本就是这个意思。
除法也可以看成是连减。

我来回复

您尚未登录,请登录后再回复。点此登录或注册