1. 程式人生 > >Booth乘法

Booth乘法

先看一個例子,結合疑問看演算法。

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.1

110        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。