在计算机中,二进制的乘除法都是通过移位和加法操作共同组合实现的,所以,我们先来看看计算机中的移位操作。

算术移位

针对有符号数的移位,具体规则如下表:

对于算术移位而言,其算术左移,相当于 × 2,算术右移,相当于 ÷ 2。由于数位的限制,故移位可能带来一定的误差。

逻辑移位

针对无符号数的移位,无论是逻辑左移还是逻辑右移,对于空缺位,都遵循补0原则。

循环移位

循环移位分为两种,带进位的循环移位(大循环)和不带进位的循环移位(小循环)。

循环移位,非常适合将数据的高低字节互换。

二进制乘法

原码一位乘

补码一位乘

一位乘小结

原码两位乘

其中+3X的运算,用普通的加法器不能一次完成。如果分为两次执行,则又降低了速度。故可将3X当作(4X-X)来处理,本次操作执行-X,用一个欠账触发器CJ记下欠账,下一次操作时再补上+4X。由于本次累加后部分积要右移两位,从相对关系来看,相当于被乘数左移了两位,因而下一次实际上只需执行+X,就等于前次完成了+4X操作。

综上,可以得到原码两位乘的运算规则如下:

下面来举个例子看看

补码两位乘

补码两位乘法是将Booth一位乘法两步合并成一步而导出的。

具体运算规则如下:

eg. X=0.10110,Y=-0.10101,用补码二位乘求[X·Y]

阵列乘法器

二进制除法

在进行除法运算前,需要先对除数和被除数的大小进行判别。

原码恢复余数法

原码加减交替法

补码加减交替法

除法运算小结

菜菜,捞捞~