计算机组成原理——补码乘法运算
·

补码的一位乘法(Booth算法)
- 进行 n 轮加法、移位,最后再多来一次加法
- 每次加法可能 +0 、+[x]补、+[-x]补
- 每次移位是“补码的算数右移”
- 符号位参与运算
在第二个步骤中,需要根据MQ中的最低位、辅助位 来确定加什么:
- 辅助位 - MQ中最低位 = 1时,(ACC)+[x]补
- 辅助位 - MQ中最低位 = 0时,(ACC)+0
- 辅助位 - MQ中最低位 = -1时,(ACC)+[-x]补
手算模拟
例题
设机器字长为5位(含1位符号位,n=4),x = −0.1101,y = +0.1011,采用Booth算法求x·y
解:手动计算是这样
最后得 [x·y]补 = 11.01110001
即x·y = −0.10001111
做题总结
- n轮加法、算数右移,加法规则如下:
辅助位 - MQ中最低位 = 1时,(ACC)+[x]补
辅助位 - MQ中最低位 = 0时,(ACC)+0
辅助位 - MQ中最低位 = -1时,(ACC)+[-x]补 - 补码的算数右移:
符号位不动,数值位右移,正数右移补0,
负数右移补1(符号位是啥就补啥) - 一般来说,Booth算法的被乘数、部分积采用双符号位补码
原码,补码一位乘法的对比
| 原码一位乘法: | 补码一位乘法: |
|---|---|
| 进行 n 轮加法、移位 | 进行 n 轮加法、移位,最后再多来一次加法 |
每次加法可能 +0、+[|x|]原 |
每次加法可能 +0、+[x]补、+[-x]补 |
| 每次移位是“逻辑右移” | 每次移位是“补码的算数右移” |
| 符号位不参与运算 | 符号位参与运算 |
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)