用原码实现乘法运算是十分方便的。原码一位乘法是从手算演变而来的,即用两个操作数的绝对值相乘,乘积的符号为两操作数符号的异或值(同号为正,异号为负)。
原码一位乘法的规则为:
(1)参加运算的操作数取其绝对值;
(2)令乘数的最低位为判断位,若为“1”,加被乘数,若为“0”,不加被乘数(加0);
(3)累加后的部分积右移一位;
(4)重复n次(2)和(3);
(5)符号位单独处理,同号为正,异号为负 。
比较法-Booth乘法
设:被乘数[X]补=Xs.X1X2…Xn,乘数[Y]补=Ys.Y1Y2…Yn。
在乘数的最低位之后增加一位附加位Yn 1,它的初值为0,增加附加位不会影响运算结果。
每次运算取决于乘数相邻两位Yi、Yi 1的值,把它们称为乘法的判断位。根据校正法的统一表达式推出:由乘数相邻两位的比较结果(Yi 1-Yi)来确定运算操作。
Booth乘法规则如下:
(1)参加运算的数用补码表示;
(2)符号位参加运算;
(3)乘数最低位后面增加一位附加位Yn 1,其初值为0;
(4)由于每求一次部分积要右移一位,所以乘数的最低两位Yn、Yn 1的值决定了每次应执行的操作;
(5)移位按补码右移规则进行;
(6)共需做n 1次累加,n次移位,第n 1次不移位 。
为了提高乘法的执行速度,可以选用两位乘法的方案。所谓两位乘法,就是每次处理乘数中的两位,从而使乘法的速度提高了一倍。两位乘法又可分为原码两位乘法和补码两位乘法,在此只讨论补码两位乘法。
根据前面介绍的Booth乘法方便地推导出补码两位乘法,即把补码两位乘理解为将Booth乘法的两次合并为一次来做。
补码两位乘法规则如下:
(1)参加运算的数用补码表示;
(2)符号位参加运算;
(3)乘数最低位后增加一位附加位Yn 1,初值为0;
(4)根据乘数的最低三位Yn-1YnYn 1的值决定每次应执行的操作;
(5)移位按补码右移规则进行 。