《计算机组成原理》课后题答案_清华大学出版_秦磊华_吴非·· 下载本文

3.7用补码一位乘法计算x×y=? (1) x=0.10110,y=-0.00011 (2) x=-0.011010,y=-0.011101 解:(1)

[x]补=0.10110, [-x]补=1.01010, [y]补=1.11101

部分积 乘数 ynyn+1 说明 ??

00.00000 1.111010 yn+1=0

11.01010

11.11011

所以 +11.01010 yn+1yn=01,加[-x]补

→ 11.10101 0 1.11101 右移一位,得P1

+00.10110 yn+1yn=10,加[x]补

00.01011 →00.00101 10 1.1110 右移一位,得P2 +11.01010 yn+1yn=01,加[-x]补

11.01111

→11.10111 110 1.111 右移一位,得P3 +00.00000 yn+1yn=11,加0

11.10111 →11.11011 1110 1.11 右移一位,得P4

+00.00000 yn+1yn=11,加0

→11.11101 11110 1.1 右移一位,得P5 +00.00000 yn+1yn=11,加0

11.11101 11110 最后一步数据不移位

[x·y]补=1.1110111110

(2) [x]补=1.100110, [-x]补=0.011010, [y]补=1.100011

部分积 乘数 ynyn+1 说明 ??

00.000000 1.1000110 yn+1=0

+00.011010 yn+1yn=01,加[-x]补

00.011010

→00.001101 0 1.100011 右移一位,得P1

+00.000000 yn+1yn=11,加0

11.110110 11.111011

所以

00.001101

→00.000110 10 1.10001 右移一位,得P2 +11.100110 yn+1yn=10,加[x]补

11.101100

→11.110110 010 1.1000 右移一位,得P3 +00.000000 yn+1yn=00,加0

→11.111011 0010 1.100 右移一位,得P4

+00.000000 yn+1yn=00,加0 →11.111101 10010 1.10 右移一位,得P5

+00.011010 yn+1yn=01,加[-x]补

00.010111 →00.001011 110010 1.1 右移一位,得P6 +00.000000 yn+1yn=00,加0 00.001011 110010 最后一步数据不移位

[x·y]补=0.001011110010

3.8用原码不恢复余数法和补码不恢复余数法计算x÷y =? (1) x=0.10101,y=0.11011 (2) x=-0.10101,y=0.11011

解:(1)[y]补=0.11011,[-y]补=1.00101

源码不恢复余数法:

被除数/余数 商寄存器 上商位 说明

00.10101 +[-y]补 11.00101 (x-y)比较 11.11010 0 r0<0,商上0 ← 11.10100 0 左移一位

+1 余数为负,加y比较 00.11011 00.01111 1 r1>0,商上1 ← 00.11110 0.1 左移一位

+[-y]补 11.00101 余数为正,减y比较

1 00.00011 1 r2>0,商上1 ← 00.00110 0.11 左移一位

+[-y]补 11.00101 余数为正,减y比较

0 11.01011 0 r3<0,商上0 ← 11.10110 0.110 左移一位

+ 00.11011 余数为负,加y比较 1 00.00001 0.1101 1 r4>0,商上1,左移一位

← 00.00010 +[-y]补 11.00101 11.00111 0.11010

余数为正,减y比较 r5<0,商上0,只移商

-101

[x]原÷[y]原=[Q]原=0.11010,余数[r]原=1.00111。

补码不恢复余数法:

[y]补=0.11011,[-y]补=1.00101

被除数/余数 商 上商位 说明 00.10101 +[-y]补 11.00101 被除数与除数同号,减除数比较 11.11010 0 余数r0与除数异号,商上0

← 11.10100 0 左移一位,商从上商位移入商寄存器 +[y]衬 00.11011 加除数比较

00.01111 1 余数r1与除数同号,商上1 ← 00.11110 0.1 左移一位 +[-y]补 11.00101 减除数

00.00011 1 余数r2与除数同号,商上1 ← 00.00110 0.11 左移一位 +[-y]补 11.00101 减除数比较

11.01011 0 余r3与除数异号,商上0 ← 11.10110 0.110 左移一位 +[y]衬 00.11011 加除数比较

00.10001 1 余r4与除数同号,商上1

← 11.10110 0.1101 +[-y]补 11.00101 11.11011 0.11010

故[x÷y]衬= 0.11010,余数[r]补=1.0000011011 因未除尽,商为正,因此商不需要校正。

商为正,余数与被除数异号,则应将余数加上除数进行修正才能获得正确的余数,为: (1.11011+0.11011)*0.00001=0.0000010110

左移一位 减除数比较

余r3与除数异号,商上0

(2)[y]补=0.11011,[-y]补=1.00101 源码不恢复余数法:

被除数/余数 商寄存器 上商位 说明 00.10101 +[-y]补 11.00101 (x-y)比较 11.11010 0 r0<0,商上0

← 11.10100 0 左移一位

+ 00.11011 余数为负,加y比较 00.01111 1 r1>0,商上1 ← 00.11110 0.1 左移一位

+[-y]补 11.00101 余数为正,减y比较

1 00.00011 1 r2>0,商上1 ← 00.00110 0.11 左移一位

+[-y]补 11.00101 余数为正,减y比较

0 11.01011 0 r3<0,商上0 ← 11.10110 0.110 左移一位

+ 00.11011 余数为负,加y比较 1 00.00001 0.1101 1 r4>0,商上1,左移一位

← 00.00010 +[-y]补 11.00101 11.00111 0.11010

余数为正,减y比较 r5<0,商上0,只移商

-101

[x]原÷[y]原=[Q]原=-0.11010,余数[r]原=1.00111。