【计算机组成原理】定点乘法运算之补码一位乘法(Booth算法)(对初学者的步骤详解)

【计算机组成原理】定点乘法运算之补码一位乘法(Booth算法)(对初学者的步骤详解)

运算规则

  1. 符号位参与运算,运算的数均以补码表示。
  2. 被乘数一般取双符号位参与运算,部分积取双符号位,初值为0,乘数可取单符号位。
  3. 乘数末位增设附加位 y n + 1 y_{n+1} yn+1,且初值为0。
  4. 根据 ( y n , y n + 1 ) (y_{n},y_{n+1}) (yn,yn+1)的取值来确定操作,参见下表,
  5. 移位按补码右移规则进行
  6. 按照上述算法进行n+1步操作,但第n+1不再移位(共进行n+1次累加和n次右移),仅根据 y n y_n yn y n + 1 y_{n+1} yn+1的比较结果做相应的运算。
y n y_n yn(高位) y n + 1 y_{n+1} yn+1(低位) 操作
0 0 部分积右移一位
0 1 部分积加 [ X ] 补 [X]_{补} [X],右移一位
1 0 部分积加 [ − X ] 补 [-X]_{补} [X],右移一位
1 1 部分积右移一位

步骤详解

无题言狗??
放狗,不对,看题。
设机器字长为5位(含1位符号位,n=4),x=-0.1101,y=0.1011,采用Booth算法求 X • Y X•Y XY
解:
首先,列出对应的补码。
[ X ] 补 = 11.0011 [X]_{补}=11.0011 [X]=11.0011
[ − X ] 补 = 00.1101 [-X]_{补}=00.1101 [X]=00.1101
[ Y ] 补 = 0.1011 [Y]_{补}=0.1011 [Y]=0.1011
开始按照要求求解
高位部分积位数对标被乘数X的位数,且符号位取双位:
部分积:00.0000
开始:

(高位部分积) (低位部分积/乘数) 说明
00.0000 0.1011¦0 丢失位 初始情况
+ [ − X ] 补 +[-X]_{补} +[X] 00.1101 发现是10所以对照表格,
应该部分积加 [ − X ] 补 [-X]_{补} [X],右移一位
执行本行左边的操作
右移一位 00.0110 10.101¦10 我们把高位和低位作为一个整体
进行右移,所以高位最右边的1到
了低位部分的最左边
右移一位 00.0011 01.010¦110 看见上一行的是11所以直接右移一位
+ [ X ] 补 +[X]_{补} +[X] 11.0011 是01所以部分积加 [ X ] 补 [X]_{补} [X],右移一位
和:11.0110 001.010¦110 开始右移
右移一位 11.1011 0010.1¦0110 因为高位部分在补码中,
最高位是1时右移补1

+ [ − X ] 补 +[-X]_{补} +[X] 00.1101 部分积加 [ − X ] 补 [-X]_{补} [X],右移一位
和:00.1000 0010.1¦0110 开始右移
右移一位 00.0100 00010.¦10110 是01所以部分积加 [ X ] 补 [X]_{补} [X],右移一位
+ [ X ] 补 +[X]_{补} +[X] 11.0011
和 11.0111 最后一步不再移位

所以蓝色部分构成 [ X • Y ] 补 = 1.01110001 [X•Y]_{补}=1.01110001 [XY]=1.01110001,所以 X • Y = − 0.10001111 X•Y=-0.10001111 XY=0.10001111

总结

根据规则,我们给乘数Y增设附加位 y n + 1 y_{n+1} yn+1,且初值为0,提供了图表中的初始情况下的1¦0

课后题:
上述的情况是我们 [ X • Y ] [X•Y] [XY],那么我们计算一下 [ Y • X ] [Y•X] [YX],就可以知道我们是不是掌握了啦!!!

课后题解答
既然是课后题就不写那么详细啦。
首先列出补码:
[ Y ] 补 = 00.1011 [Y]_{补}=00.1011 [Y]=00.1011
[ − Y ] 补 = 11.0101 [-Y]_{补}=11.0101 [Y]=11.0101
[ X ] 补 = 1.0011 [X]_{补}=1.0011 [X]=1.0011

step1: (高位部分积)00.0000
step2: (低位部分积)1.0011¦0
step3: 高位积加 [ − Y ] 补 = 11.0101 [-Y]_{补}=11.0101 [Y]=11.0101,和:11.0101
step4: 整体右移11,1010 11,001¦10
step5: 整体右移11,1101 01,100¦110
step6: 高位积加 [ Y ] 补 = 00.1011 [Y]_{补}=00.1011 [Y]=00.1011,和:00,1000
step7: 整体右移00,0100 00,110¦0110
step8: 整体右移00,0100 00,011¦00110
step9: 高位积加 [ − Y ] 补 = 11.0101 [-Y]_{补}=11.0101 [Y]=11.0101,和:11.0111

和上面详解一样,蓝色部分的数字就是我们想要的结果即 [ Y • X ] 补 = 1.01110001 [Y•X]_{补}=1.01110001 [YX]=1.01110001

你可能感兴趣的:(计算机组成原理)