《计算机组成原理》第2章习题答案
第⼆章习题解答
1.设机器数的字长8位(含1位符号位),分别写出下列各⼆进制数的原码、补码和反码:0,-0,0.1000,-0.1000,0.1111,-0.1111,1101,-1101。解:
2.写出下列各数的原码、补码和反码:7/16,4/16,1/16,±0,-7/16,-4/16,-1/16。解:7/16=7*2-4=0.01114/16=4*2-4=0.01001/16=1*2-4=0.0001真值原码补码反码7/16 0.0111 0.0111 0.01114/16 0.0100 0.0100 0.01001/16 0.0001 0.0001 0.0001+0 O.0OOO O.0OOO O.0OOO-0 1.0OOO O.0OOO 1.1111-1/16 1.0OO1 1.1111 1.1110-4/16 1.0100 1.1100 1.1011-7/16 1.0111 1.1001 1.1000
3.已知下列数的原码表⽰,分别写出它们的补码表⽰:[X1]原=O.10100,[X2]原=l.10111。解:[X1]补=0.10100,[X2]补=1.01001。
4.已知下列数的补码表⽰,分别写出它们的真值:[X1]补=O.10100,[X2]补=1.10111。解: X1=O.10100, X2=-0.01001。
5.设⼀个⼆进制⼩数X≥0,表⽰成X=0.a1a2a3a4a5a6,其中a1~a6取“1”或“O”:(1)若要X>1/2,a1~a6要满⾜什么条件?(2)若要X≥1/8,a1~a6要满⾜什么条件?(3)若要1/4≥X>1/16,a1~a6要满⾜什么条件?解:(1) X>1/2的代码为:0.100001~0.111111。
a1=1,a2+a3+a4+a5+a6=1。(2) X≥1/8的代码为:
0.001001~0.111111(1/8~63/)a1+a2=0,a3=1或a1=0,a2=1,或a2=1(3)1/4≥X>1/16的代码为:0.000101~0.01000(5/~1/4)
a1+a2+a3 =0, a4=1,a5+a6=1 或a1+a2=0,a3=1 或a2=1,a1+a3+a4+a5+a6=06.设[X]原=1.a1a2a3a4a5a6
(1)若要X>-1/2,a1~a6要满⾜什么条件?(2)若要-1/8≥X≥-1/4,a1~a6要满⾜什么条件?解:(1) X>-1/2的代码为:
1.000001~1.011111(-1/~-31/)。a1=0,a2+a3+a4+a5+a6=1。(2) -1/8≥X≥-1/4的代码为:1.001000~1.01000(-1/8~-1/4)
a1+a2 =0, a3=1或a2=1,a1+a3+a4+a5+a6=07.若上题中[X]原改为[X]补,结果如何?解:
(1) X>-1/2的代码为:
1.100001~1.111111(-31/~-1/)。a1=1,a2+a3+a4+a5+a6=1。(2) -1/8≥X≥-1/4的代码为:1.110000~1.111000(-1/4~-1/8)
a1*a2=1,a3=0或a1*a2*a3=1, a4+a5+a6=0
8.⼀个n位字长的⼆进制定点整数,其中1位为符号位,分别写出在补码和反码两种情况下:(1)模数;(2)最⼤的正数;(3)最负的数;(4)符号位的权;(5)-1的表⽰形式;(6)O的表⽰形式。解:补码反码
模数 Mod2n Mod(2n-1)最⼤的正数 2n-1-1 2n-1-1最负的数 -2n-1 -(2n-1-1)符号位的权 2n-1 2n-1
-1的表⽰形式 11111111 11111110
O的表⽰形式 00000000 00000000(11111111)
9.某机字长16位,问在下列⼏种情况下所能表⽰数值的范围:(1)⽆符号整数
(2)⽤原码表⽰定点⼩数;(3)⽤补码表⽰定点⼩数;(4)⽤原码表⽰定点整数(5) ⽤补码表⽰定点整数。解:(1) 0≤X≤(216-1)(2) -(1-2-15)≤X≤(1-2-15)(3) -1≤X≤ (1-2-15)(4) -(215-1)≤X≤(215-1)(5) -215≤X≤(215-1)
10.某机字长32位,试分别写出⽆符号整数和带符号整数(补码)的表⽰范围(⽤⼗进制数表⽰)。解:⽆符号整数:O≤X≤(232-1)。补码: -231≤X≤(231-1)。
11.某浮点数字长12位,其中阶符1位,阶码数值3位,数符1位,尾数数值7位,阶码以2为底,阶码和尾数均⽤补码表⽰。它所能表⽰的最⼤正数是多少?最⼩规格化正数是多少?绝对值最⼤的负数是多少?解:
最⼤正数=(1-2-7)×27=127
最⼩规格化正数=2-1×2-8=2-9=1/512绝对值最⼤的负数-1×27=-128。
12.某浮点数字长16位,其中阶码部分6位(含1位阶符),移码表⽰,以2为底;尾数部分10位(含1位数符,位于尾数最⾼位),补码表⽰,规格化。分别写出下列各题的⼆进制代码与⼗进制真值。(1)⾮零最⼩正数;(2)最⼤正数;(3)绝对值最⼩负数;(4)绝对值最⼤负数。
解:(1)⾮零最⼩正数: 000000,0,100000000;2-1×2-32=2-33(2)最⼤正数: 111111,0,111111111;(1-2-9)×231
(3)绝对值最⼩负数:000000,1,011111111;-(2-1+-2-9)×2-32(4)绝对值最⼤负数:111111,1,000000000;-231。
13.⼀浮点数,其阶码部分为p位,尾数部分为q位,各包含1位符号位,均⽤补码表⽰;尾数基数r=2,该浮点数格式所能表⽰数的上限、下限及⾮零的最⼩正数是多少?写出表达式。解:上限(最⼤正数)=(1-2-(q-1))×(2)22(p-1)-1下限(绝对值最⼤负数)-1×(2)22(p-1)-1最⼩正数=2-(q-1)×(2)2-(p-1)最⼩规格化正数=2-1×(2){-2 (p-1)}。
14.若上题尾数基数r=16,按上述要求写出表达式。解:上限(最⼤正数)=(1-2-(q-1))×(16)22(p-1)-1下限(绝对值最⼤负数)-1×(16)22(p-1)-1最⼩正数=2-(q-1)×(16)2-(p-1)最⼩规格化正数=16-1×(16){-2 (p-1)}。
15.某浮点数字长32位,格式如下。其中阶码部分8位,以2为底,补码表⽰, 尾数部分⼀共24位(含1位数符),补码表⽰。现有⼀浮点代码为(8C5A3E00)16,试写出它所表⽰的⼗进制真值。O 7 8 9 31
解:(8C5A3EOO)16=1000 1100 0101 1010 0011 1110 0000 0000B符号位=0
阶码=10001100-10000000=1100=(12)10尾数=10110100011111000000000
O.10110100011111×212=(101101000111.11)2=(2887.75)1016.试将(-O.1101)。⽤IEEE短浮点数格式表⽰出来。解: -O.1101=-1.101×2-1符号位=1。阶码:127-1=126。
1,01111110,10100000000000000000000。结果=BF500000H。
17.将下列⼗进制数转换为IEEE短浮点数:,(1)28.75;(2)624;(3)-O.625;(4)+0.0;(5)-1000.5。解:
(1)(28.75)10=(11100.11)2=1.110011×24符号位=O阶码=127+4=131
0,10000011,11001100000000000000000结果=41E60000H
(2) (624)10=(1001110000)2=1.001110000×29符号位=O阶码=127+9=136
0,10001000,00111000000000000000000。结果=441C0000H。
(3) -(0.625)10=-(0.101)2=-1.01×2-1符号位=1
阶码=127—1=126。
1,01111110,01000000000000000000000。结果=BF200000H。(4)+O.O。结果=00000000H。
(5) -(1000.5)10=-(1111101000.1)2=-1.1111010001×29符号位=1
阶码=127+9=136。
1,10001000,11110100010000000000000。结果=C47A2000H。
18.将下列IEEE短浮点数转换为⼗进制数:(1)11000000 11110000 00000000 00000000:(2)00111111 00010000 00000000 00000000:(3)01000011 10011001 00000000 00000000;(4)01000000 00000000 00000000 00000000;(5)01000001 00100000 00000000 00000000;(6)00000000 00000000 00000000 00000000。解:
(1)1,10000001,11100000000000000000000:符号位=1阶码=129-127=21.111×22=111.1B=7.5所以结果=-7.5。
(2)O,01111110,00100000000000000000000符号位=0。阶码=126-127=-1
1.001×2-1=0.1001B= O.5625所以结果=O.5625。
(3)O,10000111,00110010000000000000000符号位=0阶码=135-127=8
1.0011001×28=100110010B=306所以,结果=306。
(4)0,10000000,00000000000000000000000符号位=0。阶码=128—127=1。1.0×21=10B=2所以,结果=2。
(5)0,10000010,0100000 00000000 00000000符号位=O阶码=130-127=31.01×23=1010B=10。所以,结果=10。
(6)0,00000000,00000000000000000000000阶码和尾数都等于全0,结果=O。19.对下列ASCII码进⾏译码:
1001001。0100001。1100001。1110111 1000101,1010000,10101ll,0100100解以上ASCII码分别为I,!,a,w,E,P,w,$。20.以下列形式表⽰(5382)。(1)8421码; (2)余3码;(3)2421码; (4)⼆进制数。解:
(1)0101 001l 1000 0010。(2)1000 0110 1011 0101。(3)1011 0011 1110 0010。(4)1010100000110B。
21.填写下列代码的奇偶校验位,现设为奇校验:1 0 1 O O 0 0 1O 0 O 1 1 O O 1O 1 0 O 1 1 1 0
解:3个代码的校验位分别是O,0,1。