计算机组成原理答案(张功萱等编著)终极完整版 下载本文

整理人:杜鹏

101011001000111110011

2.24 某CRC码(CRC)的生成多项式 G(x)=x3+x2+1,请判断下列CRC码是否存在错误。 (1) 0000000 (2) 1111101 (3) 1001111 (4) 1000110 解:G(x)=1101

(1) 0000000模2除1101,余数为:000,无错 (2) 1111101模2除1101,余数为:010,有错 (3) 1001111模2除1101,余数为:100,有错 (4) 1000110模2除1101,余数为:000,无错

2.25 选择题

(1) 某机字长64位,其中1位符号位,63位尾数。若用定点小数表示,则最大正

小数为 B 。

A. +(1-2-64) B. +(1-2-63) C. 2-64 D. 2-63

(2) 设[x]补=1.x1x2x3x4x5x6x7x8,当满足 B 时,x>-1/2成立。

A. x1=1, x2~x8至少有一个为1 B. x1=0, x2~x8至少有一个为1 C. x1=1,x2~x8任意 D. x1=0, x2~x8任意

(3) 在某8位定点机中,寄存器内容为10000000,若它的数值等于-128,则它采

用的数据表示为 B 。

A. 原码 B. 补码 C. 反码 D. 移码

(4) 在下列机器数中,哪种表示方式下零的表示形式是唯一的 B 。

A. 原码 B. 补码 C. 反码 D. 都不是

(5) 下列论述中,正确的是 D 。

A. 已知[x]原求[x]补的方法是:在[x]原的末位加1 B. 已知[x]补求[-x]补的方法是:在[x]补的的末位加1

C. 已知[x]原求[x]补的方法是:将尾数连同符号位一起取反,再在末位加1 D. 已知[x]补求[-x]补的方法是:将尾数连同符号位一起取反,再在末位加

1

(6) IEEE754标准规定的32位浮点数格式中,符号位为1位,阶码为8位,尾数

为23位,则它所能表示的最大规格化正数为 A 。 A. +(2-2-23)×2+127 B. +(1-2-23)×2+127 C. +(2-2-23)×2+255 D. 2+127-2-23

(7) 浮点数的表示范围取决于 A 。

A. 阶码的位数 B. 尾数的位数 C. 阶码采用的编码 D. 尾数采用的编码

(8) 在24×24点阵的汉字字库中,一个汉字的点阵占用的字节数为 D 。

A. 2 B. 9 C. 24 D. 72

(9) 假定下列字符码中有奇偶校验位,但没有数据错误,采用奇校验的编码是

B 。

A. 10011010 B. 11010000 C. 11010111 D. 10111000

(10) 在循环冗余校验中,生成多项式G(x)应满足的条件不包括 D 。

A. 校验码中的任一位发生错误,在与G(x)作模2除时,都应使余数不为0 B. 校验码中的不同位发生错误时,在与G(x)作模2除时,都应使余数不同 C. 用G(x)对余数作模2除,应能使余数循环

D. 不同的生成多项式所得的CRC码的码距相同,因而检错、校错能力相同

2.26 填空题

整理人:杜鹏

(1) 设某机字长为8位(含一符号位),若 [x]补=11001001,则x所表示的十进

制数的真值为 ① ,[1/4x]补= ② ;若 [y]移=11001001,则y所表示的十进制数的真值为 ③ ;y的原码表示 [y]原= ④ 。

答:① -55 ② 11110010 ③ +73 ④ 01001001 (2) 在带符号数的编码方式中,零的表示是唯一的有 ① 和 ② 。

答:① 补码 ② 移码

(3) 若[x1]补=10110111, [x2]原=1.01101 ,则数x1的十进制数真值是 ① ,

x2的十进制数真值是 ② 。 答:① -73 ② -0.71875 (4) 设某浮点数的阶码为8位(最左一位为符号位),用移码表示;尾数为24位(最

左一位为符号位),采用规格化补码表示,则该浮点数能表示的最大正数的阶码为 ① ,尾数为 ② ;规格化最大负数的阶码为 ③ ,尾数为 ④ 。(用二进制编码回答)(书上:最小负数的阶码为 ③ ,尾数为 ④ 答:① 11111111 ② 011111111111111111111111

③ 11111111 ④ 100000000000000000000000

(5) 设有效信息位的位数为N, 校验位数为K,则能够检测出一位出错并能自动纠

错的海明校验码应满足的关系是 ① 。 答:① 2K-1≥N+K

2.27 是非题

(1) 设[x]补=0.x1x2x3x4x5x6x7,若要求x>1/2成立,则需要满足的条件是x1必

须为1,x2~x7至少有一个为1。 √ (2) 一个正数的补码和它的原码相同,而与它的反码不同。 ×

(3) 浮点数的取值范围取决于阶码的位数,浮点数的精度取决于尾数的位数。 √ (4) 在规格化浮点表示中,保持其他方面不变,只是将阶码部分由移码表示改为

补码表示,则会使该浮点表示的数据表示范围增大。 ×

(5) 在生成CRC校验码时,采用不同的生成多项式,所得到CRC校验码的校错

能力是相同的。 ×

第三章 作业解答 作业 三 (1)

3.1 已知[x]补、[y]补,计算[x+y]补和[x-y]补,并判断溢出情况。

(1) [x]补=0.11011 [y]补=0.00011 (2) [x]补=0.10111 [y]补=1.00101 (3) [x]补=1.01010 [y]补=1.10001 解:(1) [x]补=0.11011 [y]补=0.00011 [-y]补=1.111101 [x+y]补=0.11011+0.00011=0.11110 [x-y]补=0.11011+1.111101=0.11000

(2)[x]补=0.10111 [y]补=1.00101 [-y]补=0.11011 [x+y]补=0.10111+1.00101=1.11100

[x-y]补=0.10111+0.11011=1.10010 溢出

(3)[x]补=1.01010 [y]补=1.10001 [-y]补=0.01111 [x+y]补=1.01010+1.10001=0.11011 溢出 [x-y]补=1.01010+0.01111=1.11001

3.2 已知[x]补、[y]补,计算[x+y]变形补和[x-y]变形补,并判断溢出情况。

整理人:杜鹏

(1) [x]补=100111 [y]补=111100 (2) [x]补=011011 [y]补=110100 (3) [x]补=101111 [y]补=011000 解:(1)[x]变形补=1100111 [y]变形补=1111100 [-y]变形补=0000100 [x+y]变形补=1100111+1111100=1100011 [x-y]变形补=1100111+0000100=1101011

(2)[x]变形补=0011011 [y]变形补=1110100 [-y] ]变形补=0001100 [x+y]变形补=0011011+1110100=0001111

[x-y]变形补=0011011+0001100=0100111 溢出

(3) [x]变形补=1101111 [y]变形补=0011000 [-y]变形补=1101000 [x+y]变形补=1101111+0011000=0000111

[x-y]变形补=1101111+1101000=1010111 溢出 3.4 分别用原码一位乘法和补码一位乘法计算[x×y]原和[x×y]补。 (1) x=0.11001 y=0.10001 (2) x=0.01101 y=-0.10100 (3) x=-0.10111 y=0.11011 (4) x=-0.01011 y=-0.11010 解:(1)[x×y]原=0.0110101001 [x×y]补=0.0110101001 (2)[x×y]原=1.0100000100 [x×y]补=1.1011111100 (3)[x×y]原=1.1001101101 [x×y]补=1.0110010011 (4)[x×y]原=0.0100011110 [x×y]补=0.0100011110 3.5 分别用原码两位乘法和补码两位乘法计算[x×y]原和[x×y]补。 (1) x=0.11001 y=0.10001 (2) x=0.10101 y=-0.01101 (3) x=-0.01111 y=0.11101 (4) x=-0.01001 y=-0.10010 解: (1) [x×y]原=0.0110101001 [x×y]补=0.0110101001 (2)[x×y]原=1.0100010001 [x×y]补=1.1011101111 (3)[x×y]原=1.0110110011 [x×y]补=1.1001001101 (4)[x×y]原=0.0010100010 [x×y]补=0.0010100010

3.6 分别用原码不恢复余数法和补码不恢复余数法计算[x/y]原和[x/y]补。(1) (4) (1) x=0.01011 y=0.10110

[x/y]原=0.10000 [x/y]补=0.10000 or [x/y]补=0.10001 (2) x=0.10011 y=-0.11101

[x/y]原=1.10100 [x/y]补=1.01100 or [x/y]补=1.01011 (3) x=-0.10111 y=-0.11011

[x/y]原=0.11100 [x/y]补=0.11101 or [x/y]补=0.11100 (4) x=+10110 y=-00110 [x/y]原=100011 [x/y]补=111101

3.9 已知某机浮点数表示格式如下: 0 1 2 5 6 11 数符 阶符 阶 码 尾 数

其中,浮点数尾数和阶码的基值均为2,阶码用移码表示,尾数用补码表示。设: x=0.110101×2-001 y=-0.100101×2+001

整理人:杜鹏

试用浮点运算规则计算x+y、x-y、x×y、x/y。(要求写出详细运算步骤,并进行规格化)。 解:机器数 [x]补=0 01111 110101 [y]补=1 10001 011011 [-y]补=0 10001 100101 (1)x+y 机器数 [x+y]补=1 10000 010000 x+y=-0.110000×20

对阶: [Δe]移=[ex]移+[-ey]补=01111+11111=01110,Δe=ex-ey=-00010 小阶对大阶:[x]补=0 10001 001101

[x+y]补=1 10000 010000 x+y=-0.110000×20 (2)x-y

[x-y]补=0 10001 110010 x-y=0.110010×21 (3)x×y x×y=-0.111110×2-001=-0.111110×2-1

阶码相加:[ex+ey]移=[ex]移+[ey]补=01111+00001=10000 尾数可采用定点补码乘法(双符号位):[Sx×Sy]补=[Sx]补×[Sy]补=11.100001010111 规格化:[x×y]补=1 01111 000010 x×y=-0.111110×2-001=-0.111110×2-1 (4)x/y

尾数|Sx|>|Sy|,Sx右移得:[Sx]补=00.011010,[ex]移=10000, 阶码相减:[ex-ey]移=[ex]移+[-ey]补=10000+11111=01111 尾数用补码不恢复余数法:[Sx/Sy]补=[Sx]补×[Sy]补=1.010011(恒置1) OR 1.010100(校正)

规格化:[x/y]补=1 01111 010011 OR 1 01111 010100 x/y=-0.101101×2-001 OR -0.101100×2-001 3.10

A C Cn Cn+1 ALU AND1 寄存器B B B AND2 CR & 移 位 脉 冲 时钟脉冲 CT Q 启动 结束 Cn Cn Cn+1 Cn+1

00. 0 0 0 0 0 1 0 0 1 1 0 0 00. 0 0 0 0 0 0 1 0 0 1 1 0 -x 00. 1 1 0 0 1 00. 1 1 0 0 1

00. 0 1 1 0 0 1 0 1 0 0 1 1 00. 0 0 1 1 0 0 1 0 1 0 0 1 +x 11. 0 0 1 1 1 11. 0 1 1 0 1

11. 1 0 1 1 0 1 0 1 0 1 0 0 11. 1 1 0 1 1 0 1 0 1 0 1 0 -x 00. 1 1 0 0 1

00. 1 0 1 0 0 0 1 0 1 0 1 0 得 [X×Y]补=0.1010001010 X×Y=0.1010001010 寄存器 A B C

运算初态 00 00000 11 00111 1001100 运算终态