文档库

最新最全的文档下载
当前位置:文档库 > 计算机组成原理第2章习题答案

计算机组成原理第2章习题答案

第2章习题及解答

2-2将下列十进制表示成二进制浮点规格化的数(尾数取12位,包括一位符号位;阶取4位,包括一位符号位),并写出它的原码、反码、补码三和阶移尾补四种码制形式;

(1)7.75

解:X=7.75=(111.11)2=0.11111×211

[X]原=0011×0.11111000000

[X]反=0011×0.11111000000

[X]补=0011×0.11111000000

[X]阶称,尾补=1011×0.11111000000

(2) –3/64

解:X=-3/64=(-11/26)2=(-0.00001)2=-0.11×2-100

[X]原=1100×1.11000000000

[X]反=1011×1.00111111111

[X]补=1100×1.010********

[X]阶称,尾补=0100×1.010********

(3) 83.25

解:X=-3/64=(1010011.01)2=0.101001101×2111

[X]原=0111×0.101001101

[X]反=[X]补=[X]原

[X]阶称,尾补=1111×0.10100110

(4) –0.3125

解:X=(–0.3125)10=(-0.0101)2=-0.101×2-1

[X]原=1001×1.10100000000

[X]反=1110×1.010********

[X]补=1111×1.01100000000

[X]阶称,尾补=0111×1.01100000000

2-4 已知x和y,用变形补码计算x+y,并对结果进行讨论。

(2) x=0.11101,y=-0.10100

解:[X]补=00.11101, [Y]补=11.01100, [-Y]补=00.10100

[X]补+ [Y]补=00.11101+11.01100=00.01001

X+Y=0.01001

[X]补- [Y]补=[X]补+ [-Y]补=00.11101+00.10100=01.10001

X+Y 正溢

(3) x=-0.10111,y=-0.11000

解: [X]补=11.01001, [Y]补=11.01000, [-Y]补=00.11000

[X]补+ [Y]补=11.01001+11.01000=11.10001

X+Y=-.011111

[X]补- [Y]补=[X]补+ [-Y]补=11.01001+00.11000=00.00001

X-Y =0.00001

2-5 已知x和y,用变形补码计算x-y,并对结果进行讨论。

(1)x=0.11011,y=0.11101

解:[X]补=00.11011, [Y]补=00.11101, [-Y]补=11.00011

[X]补+ [Y]补=00.11011+00.11101=01.11000

X+Y 正溢

[X]补- [Y]补=[X]补+ [-Y]补=00.11011+11.00011=11.11110

X-Y=-0.00010

(2)x=0.11111,y=-0.11001

解:[X]补=00.11111, [Y]补=11.00111, [-Y]补=00.11001

[X]补+ [Y]补=00. 11111+11.00111=00.00110

X+Y=0.00110

[X]补- [Y]补=[X]补+ [-Y]补=00.11111+00.11001=01.1100

X-Y 正溢

2-6 用原码一位乘法和补码一位乘法计算x×y=?

(2) x=-0.11010,y=-0.01011

解|x| = 00.11010 (用双符号表示), |y| = 0.01011 (用单符号表示) 部分积乘数y n说明

0 0.0解|x| = 00.11010 (用双符号表示), |y| = 0.01011 (用单符号表示)

部分积乘数y n说明

0 0.0 0 0 0 0 0.0 1 0 1 1 y n=1,加|x|

+0 0.1 1 0 1 0

0 0.1 1 0 1 0 0 0 1 0 1 1

0 0.0 1 1 0 1 0 0.0 1 0 1 右移一位得p1

+0 0.1 1 0 1 0 y n =1,加|x|

0 1.0 0 1 1 1 0 0.0 1 0 1

0 0.1 0 0 1 1 1 0 0.0 1 0 右移一位得p2

+0 0.0 0 0 0 0 y n =0,加0

0 0.1 0 0 1 1 1 0 0.0 1 0

0 0.0 1 0 0 0 1 1 0 0.0 1 右移一位得p3

+0 0.1 1 0 1 0 y n=1,加|x|

0 1.0 0 0 1 0 1 1 0 0.0 1

0 0.1 0 0 0 1 1 1 1 0 0.0 右移一位得p4

+0 0.0 0 0 0 0 y n=1,加|x|

0 0.1 0 0 0 1 1 1 1 0 0.1

0 0.0 1 0 0 0 1 1 1 1 0 0. 右移一位得p5

p s = x s⊕y s=1⊕1= 0

|p| = |x|?|y| = 0.010*******

所以[x?y]原=0.100011110

解[x]补= 11.00110, [–x]补= 00.11010 (用双符号表示), [y]补= 1.10101 (用单符号表示) 部分积乘数y n y n+1说明

0 0.0 0 0 0 0 1.1 0 1 0 1 0

+ 0 0.1 1 0 1 0 y n y n+1=10.加[–x]补

0 0.1 1 0 1 0

0 0.0 1 1 0 1 0 1.1 0 1 0 1 右移一位得p1

+ 1 1. 0 0 1 1 0 y n y n+1=01. 加[x]补

1 1.1 0 0 1 1

1 1.1 1 0 0 1 1 0 1.1 0 1 0 右移一位得p2

+ 0 0. 1 1 0 1 0 y n y n+1=10.加[–x]补

0 0.1 0 0 1 1

0 0.0 1 0 0 1 1 1 0 1.1 0 1 右移一位得p3

1 1.0 0 1 1 0 y n y n+1=01 加[x]补

1 1.0 1 1 1 1

1 1.1 0 1 1 1 1 1 1 0 1.1 0 右移一位得p4

+0 0.1 1 0 1 0 y n y n+1=10.加[–x]补

0 0 1 0 0 0 1 1 1 1 0 1.1 0

0 0 0 1 0 0 0 1 1 1 1 0 1.1 y n y n+1=11 右移

0 0 0 0 1 0 0 0 1 1 1 1 0 1. 最后不移位

[x?y]补=0.010*******

2-7 用补码两位乘法计算x×y=?

(1) x=0.10110,y=-0.00011

答案为:[x?y]补=1.1110111110

解解[x]补=000.10110,[-x]补=111.01010,2[-x]补=110.10100,2[x]补=001.01100 [y]补=1.11101(尾数为5,是偶数,用单符号位表示)

部分积乘数y n y n+1说明

0 0 0.0 0 0 0 0 1.1 1 1 0 1 0

0 0 0.1 0 1 1 0 y n-1y n y n+1=010 加[x]补

0 0 0.1 0 1 1 0

0 0 0.0 0 1 0 1 1 0 1.1 1 1 0 右移两位

1 1 1.0 1 0 1 0 y n-1y n y n+1=110 加[-x]补

1 1 1.0 1 1 1 1 1 0 1.1 1 1 0

1 1 1.1 1 0 1 1 1 1 1 0 1.1 1 右移两位

0 0 0.0 0 0 0 0 y n-1y n y n+1=111 0

1 1 1.1 1 0 1 1 1 1 1 0 1.1 1 最后的位移一位

1 1 1.1 1 1 0 1 1 1 1 1 0 1.1

故[x×y]补=1.1110111110

2-8 用原码不恢复余数法和补码不恢复余数法计算x÷y=?

(1) x=0.10101,y=0.11011

原码不恢复余数法

[|x|]补=00.10101,[|y|]补= 00.11011 ,[–|y|]补= 11.00101 (用双符号表示)

被除数x /余数r 商数q 说明

0 0.1 0 1 0 1

+ [–|y| ]补 1 1.0 0 1 0 1 减去除数

1 1.1 1 0 1 0 0 余数为负,商上0

← 1 1.1 0 1 0 0 0 r和q左移一位

+ [ |y|]补0 0.1 1 0 1 1 加上除数

0 0.0 1 1 1 1 0.1 余数为正,商上1

← 0 0.1 1 1 1 0 0.1 r和q左移一位

+ [–|y| ]补 1 1.0 0 1 0 1 减去除数

0 0.0 0 0 1 1 0.1 1 余数为正,商上1

← 0 0.0 0 1 1 0 0.1 1 r和q左移一位

+[–|y| ]补 1 1.0 0 1 0 1 减去除数

1 1.0 1 0 1 1 0.1 1 0 余数为负,商上0

← 1 0.1 0 1 1 0 0.1 1 0 r和q左移一位

+ [|y| ]补0 0.1 1 0 1 1 加上除数

1 1.1 0 0 0 1 0.1 1 0 0 余数为负,商上0

← 1 1.0 0 0 1 0 0.1 1 0 r和q左移一位

+ [|y| ]补0 0.1 1 0 1 1 加上除数

1 1.1 1 1 0 1 0.1 1 0 0 0 余数为负,商上0

Q S= X S⊕Y S = 0⊕0 = 0

答案为:[x/y]原=0.11000,

解[x]补= 00.10101,[y]补= 00.11011, [–y]补= 11.00101 (用双符号表示) 被除数x/余数r 商数q 说明

0 0.1 0 1 0 1

+[-y]补1 1.0 0 1 0 1 x和y同号,[x]补+[-y]补

1 1.1 1 0 1 0 0 余数与y异号,商上0

← 1 1.1 0 1 0 0 0 r和q左移一位

+[y]补0 0.1 1 0 1 1 0.1 加上除数

0 0.0 1 1 1 1 0.1 余数与y同号,商上1,

← 0.0 1 1 1 1 0 0.1 r和q左移一位

+ [y]补1 1.0 0 1 0 1 0 1 减去除数

0 0.0 0 0 1 1 0.1 1 余数与y同号,商上1

← 0.0 0 0 1 1 0 0.1 1 r和q左移一位

+[–y]补1 1.0 0 1 0 1 减去除数

1 1.0 1 0 0 1 1. 1 1 0 余数与y异号,商上0

← 1 0.1 0 0 1 0 1. 0 1 1 r和q左移一位

+[y]补0 0.1 1 0 1 1 加上除数

1 1.1 0 0 0 1 1.0 1 1 0 余数与y异号,商上0

← 1 1.0 0 0 1 0 1. 0 1 1 r和q左移一位

+[y]补0 0.1 1 0 1 1 加上除数

1 1.1 1 1 0 1 1.0 1 1 0 0 余数与y异号,商上0

不能除尽,商为正,不需校正:

[x/y]补=[x/y]补=0.11000,

答案为:[x/y]原=0.11000, [x/y]补=0.11000,

2-9 设数的阶码为3位,尾数为6位(均不包括符号位),按机器补码浮点运算步骤,完成下列[x+y]补,和[x-y]补的运算;

(1)x=2-011×0.100100,y=2-010×(-0.011010)

解:为了便于直观理解,假设两数均以补码表示,阶码采用双符号位,尾数采用双符号位,则它们的浮点表示分别为:

[ X ]补= 11.101 ,00. 100100

[ Y ]补= 11.110 ,11. 100110 [ -Y ]补= 11.110 ,00. 011010 (1)求阶差并对阶:

[ -E y]补=00.010

ΔE = E x– E y = [ E x]补+ [ - E y]补= 11.101 +00.010 = 11111

即ΔE为–1,x的阶码小,应使M x右移1位,E x加1,

[ X ]浮= 11.110 ,00. 010010

(2)尾数和差

[M x ]补+[M y ]补= 00. 010010+11. 100110=11.111000

[M x ]补-[M y ]补= 00. 010010+00. 011010=00.101100

(3)规格化处理

尾数运算结果的符号位与最高数值位为同值,

[M x ]补+[M y ]补应执行左规3位,阶减3,

结果为11.000000,阶码为11 011 。

[M x ]补-[M y ]补不要规格化

(4)判溢出

阶码符号位为11 ,不溢出,故得最终结果为x + y = 2-101× (-1)=2 -5× (-1) x-y=2-010×(0. 101100)

2-10 如何判断浮点数据运算的溢出?

答:用阶的降号位

2-12 影响加法器速度的主要因素是什么?如何提高加法器的工作速度?

答:是生产进位传递时间,采用分组进位的方法,组内并行进位,组间并行进位。

2-13 某加法器最低进位为第0位,分别按串行进位方式和并行进位方式写出进位信号C4的逻辑表达式(从原始输入到产生C4)。

串行进位C1=G1+P1C0 ,C1=G2+P2C1,C3=G3+P3C2,C4=G4+P4C3,

并行进位C1 = G1 + P1C0

C2 = G2 + P2C1 = G2 + P2(G1 + P1C0) = G2 + P2G1 + P2P1C0

C3 = G3 + P3C2 = G3 + P3(G2 + P2C1) = G3 + P3G2 + P3P2G1+ P3P2P1C0

C4 = G4 + P4G3+ P4P3G2 + P4P3P2G1+ P4P3P2P1C0

2-14 某加法器采用组内并行、组间并行的进位链,四位一组,写出进位信号C6的逻辑表达式。

C6 = G6 + P6G5+ P6P5(G*1 + P*1C0)

2-15 利用74181和74182芯片构成一个32位的ALU,采用多级分组并行进位链。

计算机组成原理第2章习题答案