先看一个例子,结合疑问看算法。
1.已知X=+0.0011 Y=-0.1011 求[XY]补
解:[x]补 =0.0011 , [-x]补 =1.1101,[y]补 =1.0101
部分积 乘数 附加位 说明
00.0000 10101 0 10,+[-x]补,右移
+ 11.1101
--------------------------------------------------------------------------------
11.1101
11.1110 11010 1 01,+[x]补,右移
+ 00.0011
--------------------------------------------------------------------------------
00.0001
00.0000 11101 0 10,+[-x]补,右移
+ 11.1101
--------------------------------------------------------------------------------
11.1101
11.1110 11110 1 01,+[x]补,右移
+ 00.0011
--------------------------------------------------------------------------------
00.0001
00.0000 11111 0 10,+[-x]补,不移位
+ 11.1101
----------------------------------------------------------------------------------
11.1101 1111
所以,[XY]补=1.11011111
计算方法:
1.符号位取两位,移位的时候小数点后的首位是0还是1,取决于符号位。
2.符号位参与运算,若乘数为1.0101,参与移位的是10101,而不是0101。
3.小数点后有几位,就移位几次,最后一次移位后记得完成加法。部分积每移位一次,乘数也跟着移位。
4.当yn,yn+1 =00时,直接右移
当yn,yn+1 =01时,+[x]补,再右移
当yn,yn+1 =10时,+[-x]补,再右移
当yn,yn+1 =00时,直接右移
5.附加位初始值为0。