【组原】补码一位乘法(booth算法)及原理
·
前置知识
定义
补码的一位大小的乘法
运算规则
运算规则一——符号位参与运算
不同于原码一位乘法,补码一位乘法的符号位是参与运算的。(原码一位乘,使用异或运算来确定结果的符号位)
运算规则二——移位规则及其理解

原理:计算101x111有两种方案
101x111 = 101 x100 + 101x10 + 101x1
101x111 = 101x(1000-1) = 101x1000 - 101
第一种方案计算1的个数次,第二种方案计算的次数为连续的0和连续的1的段数和 。
拿000111111000进行解释,
于是就可以有000 111 111 000 = 001 000 000 000 - 000 000 001 000
原本算六次,现在只需算两次。
且在对 000 111 111 000 进行扫描的时候,遇到10(第3、4位),会减去000 000 001 000,遇到01会加上001 000 000 000。
且补码中可以进行减数操作。
运算规则三
最后一次无需右移
例题
X = -0.1101 Y = 0.1011
[X]补 = 11.0011 [-X]补 = 00.1101 [Y]补 = 0.1011
| 高位部分积 | 低位部分积/乘数 | 丢失位 | 解释 |
|---|---|---|---|
| 00.0000 | 0.10110 (末尾0是辅助/附加位,初值为0) | 此时低位部分积的末两位为10,加上-X的补,并且整体向右平移 | |
| +00.1101 | 加上-X的补 | ||
| 00.1101 | 并且右移 | ||
| 00.0110 | 10.1011 | 0 | 此时低位部分积的末两位为11,只需整体向右平移 |
| 00.0011 | 010.101 | 10 | 整体向右平移 |
| 00.0011 | 010.101 | 10 | 此时低位部分积的末两位为01,加上X的补,并且整体向右平移 |
| +11.0011 | 加上X的补 | ||
| 11.0110 | 并且右移(注意这里负数的高位右移需要补上1) | ||
| 11.1011 | 0010.10 | 110 | 此时低位部分积的末两位为10,加上-X的补,并且整体向右平移 |
| +00.1101 | 加上-X的补 | ||
| 00.1000 | 并且右移 | ||
| 00.0100 | 00010.1 | 0110 | 此时低位部分积的末两位为01,加上X的补,并且整体向右平移 |
| +11.0011 | 加上X的补 | ||
| 11.0111 | 并且右移(X),最后一次不移位 |
更多推荐



所有评论(0)