先看一個例子,結合疑問看算法。
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。