问题: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,则用常规的补码转换为原码即可。
定点数一位乘法之Booth(布斯)算法
最新推荐文章于 2024-08-12 11:11:32 发布
本文详细介绍了如何使用补码实现两个数的乘法运算,包括处理正负数的特殊情况,通过位移和条件判断来逐步完成乘法过程,并给出了具体的步骤说明。
4396

被折叠的 条评论
为什么被折叠?



