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

  • 格式:pdf
  • 大小:114.38 KB
  • 文档页数:5

计算机组成原理第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.10001X+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.00110X+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 右移⼀位得p 1

+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 右移⼀位得p 2

+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 右移⼀位得p 3 +0 0.1 1 0 1 0 y n =1,加|x| 0 1.0 00 1 0 1 1 0 0.0 1

0 0.1 0 0 0 1 1 1 1 0 0.0 右移⼀位得p 4

+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. 右移⼀位得p 5

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 01.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 右移⼀位得p 1 + 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 右移⼀位得p

2 + 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 右移⼀位得p 3 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 右移⼀位得p 4 +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 00 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位(均不包括符号位),按机器补码浮点运算步骤,完