在计算机中,二进制的乘除法都是通过移位和加法操作共同组合实现的,所以,我们先来看看计算机中的移位操作。
算术移位
针对有符号数的移位,具体规则如下表:
对于算术移位而言,其算术左移,相当于 × 2,算术右移,相当于 ÷ 2。由于数位的限制,故移位可能带来一定的误差。
逻辑移位
针对无符号数的移位,无论是逻辑左移还是逻辑右移,对于空缺位,都遵循补0原则。
循环移位
循环移位分为两种,带进位的循环移位(大循环)和不带进位的循环移位(小循环)。
循环移位,非常适合将数据的高低字节互换。
二进制乘法
原码一位乘
补码一位乘
一位乘小结
原码两位乘
其中+3X的运算,用普通的加法器不能一次完成。如果分为两次执行,则又降低了速度。故可将3X当作(4X-X)来处理,本次操作执行-X,用一个欠账触发器CJ记下欠账,下一次操作时再补上+4X。由于本次累加后部分积要右移两位,从相对关系来看,相当于被乘数左移了两位,因而下一次实际上只需执行+X,就等于前次完成了+4X操作。
综上,可以得到原码两位乘的运算规则如下:
下面来举个例子看看
补码两位乘
补码两位乘法是将Booth一位乘法两步合并成一步而导出的。
具体运算规则如下:
eg. X=0.10110,Y=-0.10101,用补码二位乘求[X·Y]补
阵列乘法器
二进制除法
在进行除法运算前,需要先对除数和被除数的大小进行判别。