以基2-Booth算法来说,它是对本位及相邻低位的值进行编码。N位的乘法运算需要N次编码。2个N位的数补码相乘,输出结果位数为2N。比如,两个乘数分别是4位补码表示, 0111(7), 1101(3) ——其中,{R0,R1}代表输出结果,R1为被乘数,R2为乘数
R0 R1 P
0000 0111 0 初始
0011 0111 1 R0<=R0-R2
0001 1011 1 右移(第一次循环)
0000 1101 1 右移(第二次循环)
0000 0110 1 右移(第三次循环)
1101 0110 1 R0<=R0+R2
1110 1011 1 右移(第四次循环)
结果为 (1110 1011)=(-21)
参考资料:http://hi.baidu.com/hlyrm/blog/item/ac45b2a571a790ff9052eefa.html