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

P2=A7⊕A5⊕A4⊕A2⊕A1=0⊕1⊕0⊕1⊕0=0 P4=A6⊕A5⊕A4⊕A0=1⊕1⊕0⊕1=1 P8=A3⊕A2⊕A1⊕A0=1⊕1⊕0⊕1=1 检一纠一错的海明校验码:=1DDH 检二纠一错的海明校验码,增加P0

P0=P1⊕P2⊕A7⊕P4⊕A6⊕A5⊕A4⊕P8⊕A3⊕A2⊕A1⊕A0=1

有效信息01101101的13位检二纠一错的海明校验码:=11DDH

2.23设准备传送的数据块信息是,选择生成多项式为G(x)=100101,试求出数据块的CRC码。 解:模2除后,余数R(x)=10011,数据块的CRC码:

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。

-64-63-64-63A.+(1-2)B.+(1-2)C.2D.2 (2)设[x]补=1.x1x2x3x4x5x6x7x8,当满足B时,x>-1/2成立。 A.x1=1,x2~x8至少有一个为1B.x1=0,x2~x8至少有一个为1 C.x1=1,x2~x8任意D.x1=0,x2~x8任意 (3)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。 -23+127-23+127A.+(2-2)×2B.+(1-2)×2 -23+255+127-23C.+(2-2)×2D.2-2 (7)浮点数的表示范围取决于A。 A.阶码的位数B.尾数的位数

C.阶码采用的编码D.尾数采用的编码

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

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

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

A.B.C.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]补=,则x所表示的十进制数的真值为①,[1/4x]补=②;

若[y]移,则y所表示的十进制数的真值为③;y的原码表示 [y]原=④。

答:①-55②11110010③+73④01001001

(2)在带符号数的编码方式中,零的表示是唯一的有①和②。

答:①补码②移码

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

答:①-73②-0.71875

(4)设某浮点数的阶码为8位(最左一位为符号位),用移码表示;尾数为24位(最左一位为符号位),

采用规格化补码表示,则该浮点数能表示的最大正数的阶码为①,尾数为②;规格化最大负数的阶码为③,尾数为④。(用二进制编码回答)(书上:最小负数的阶码为③,尾数为④ 答:①②011111111111111111111111 ③④ (5)设有效信息位的位数为N,校验位数为K,则能够检测出一位出错并能自动纠错的海明校验码应满足的关系是①。 K答:①2-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.11001y=0.10001(2)x=0.01101y=-0.10100 (3)x=-0.10111y=0.11011(4)x=-0.01011y=-0.11010 解:(1)[x×y]=[x×y]= (2)[x×y]=[x×y]= (3)[x×y]=[x×y]= (4)[x×y]=[x×y]= 3.5分别用原码两位乘法和补码两位乘法计算[x×y]和[x×y]。 (1)x=0.11001y=0.10001(2)x=0.10101y=-0.01101 (3)x=-0.01111y=0.11101(4)x=-0.01001y=-0.10010 解:(1)[x×y]=[x×y]= (2)[x×y]=[x×y]= (3)[x×y]=[x×y]= (4)[x×y]=[x×y]= 3.6分别用原码不恢复余数法和补码不恢复余数法计算[x/y]和[x/y]。(1)(4) (1)x=0.01011y=0.10110 [x/y]=0.10000[x/y]=0.10000or[x/y]=0.10001 (2)x=0.10011y=-0.11101 [x/y]=1.10100[x/y]=1.01100or[x/y]=1.01011 (3)x=-0.10111y=-0.11011 [x/y]=0.11100[x/y]=0.11101or[x/y]=0.11100 (4)x=+10110y=-00110 [x/y]=100011[x/y]=111101 3.9已知某机浮点数表示格式如下: 01 25 611 数符 阶符 阶码 尾数

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

试用浮点运算规则计算x+y、x-y、x×y、x/y。(要求写出详细运算步骤,并进行规格化)。 解:机器数[x]=001111110101[y]=110001011011[-y]=010001100101 (1)x+y机器数[x+y]=110000010000x+y=-0.110000×20

对阶:[Δe]=[ex]+[-ey]=01111+11111=01110,Δe=ex-ey=-00010 小阶对大阶:[x]=010001001101

[x+y]=110000010000x+y=-0.110000×20 (2)x-y

[x-y]=010001110010x-y=0.110010×21

(3)x×yx×y=-0.111110×2001=-0.111110×21

阶码相加:[ex+ey]=[ex]+[ey]=01111+00001=10000

尾数可采用定点补码乘法(双符号位):[Sx×Sy]=[Sx]×[Sy]=11.100001010111 规格化:[x×y]=101111000010x×y=-0.111110×2001=-0.111110×21 (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)OR1.010100(校正) 规格化:[x/y]=101111010011OR101111010100 x/y=-0.101101×2001OR-0.101100×2001 3.10

ACCCALUAND寄存器BBBANDCR&移位脉冲时钟脉冲CQ启动结束CCCC 00.000001001100 00.000000100110 -x00.11001 00.11001 00.011001010011 00.001100101001 +x11.00111 11.01101 11.101101010100 11.110110101010 -x00.11001 00.101000101010 得[X×Y]=X×Y= 寄存器 A B C

运算初态 0000000 1100111 1001100 运算终态 0010100 1100111 0101010

3.11说明定点补码和浮点补码加减运算的溢出判断方法。 答:⑴定点补码加减运算的溢出判断方法:

①根据两个操作数的符号与结果的符号判别溢出:????ffffffffffsysxsyxsyxOVR??=+= ②根据两数相加时产生的进位判别溢出:OVR=Cf⊕C1 ③根据变形补码运算后的符号判别溢出: sf1sf2=00,表示结果为正数,无溢出; sf1sf2=11,表示结果为负数,无溢出; sf1sf2=01,表示结果为正溢出; sf1sf2=10,表示结果为负溢出。