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