定点数一位乘法之Booth(布斯)算法


问题:1.已知[X]补,[Y]补,求[X*Y]补。
          2.已知X,Y,用一位补码求X*Y。
此时用原码求出为7位的值,所以也要先求 [X*Y]补,再转换为 X*Y才能解决。

(1)被乘数是负数[X]补,
[-X]补, [X]补求反然后最后位+1 得到,都用两位符号表示一般为11.****
       
[Y]补用 一位符号表示一般为0.****ynyn+1 ;yn+1位是后面添加的,取0。符号为参与运算。
(2)
如果判断位 ynyn +1 = 01,则 y i+1-  y i  = 1,做加[x ]补操作;
如果判断位 yn   yn +1 = 10,则 y i+1 -y i  =  - 1, [ - x ]补 (或者 -[x ]补 )操作
如果判断位 yn   yn +1 = 11 或 00,则 y i+1-y i  = 0,[ z i ] 加0,即保持不变。
(3)被乘数移位时符号位为11、10,移动后补1。
      
被乘数移位时符号位为00,移动后补0。
      乘数移动时开始的符号为0也要参与运算,也就是最后移出4位后还要运算一次。
若所求结果为
X*Y,则用常规的补码转换为原码即可。

你可能感兴趣的:(软设/招聘)