【组原】补码一位乘法(booth算法)及原理

前置知识

  • 原码一位乘
  • 双符号位
  • 补码:正数与原码正数相等,负数等于原码负数取反加一,补码用原码表示0的两种表示之一来使得表示范围向下增大一个单位。

定义

补码的一位大小的乘法

运算规则

运算规则一——符号位参与运算

不同于原码一位乘法,补码一位乘法的符号位是参与运算的。(原码一位乘,使用异或运算来确定结果的符号位)

运算规则二——移位规则及其理解

【组原】补码一位乘法(booth算法)及原理_第1张图片
原理:计算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),最后一次不移位

你可能感兴趣的:(组成原理,考研,学习)