E1=P1⊕A6⊕A5⊕A3⊕A2⊕A0=1⊕0⊕1⊕1⊕1⊕0=0 E2=P2⊕A6⊕A4⊕A3⊕A1⊕A0=0⊕0⊕0⊕1⊕1⊕0=0 E3=P4⊕A5⊕A4⊕A3=0⊕1⊕0⊕1=0 E4=P8⊕A2⊕A1⊕A0=0⊕1⊕1⊕0=0
得到的指误字为E4E3E2E1=0000,无错。正确ASCII码为0101110=“.” 2.22 试编出8位有效信息01101101的检二纠一错的海明校验码(用偶校验)。 解:8位有效信息需要用4个校验位,所以检一纠一错的海明校验码共有12位。 4个校验位为:
P1=A7⊕A6⊕A4⊕A3⊕A1=0⊕1⊕0⊕1⊕0=0 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
检一纠一错的海明校验码:000111011101=1DDH 检二纠一错的海明校验码,增加P0
P0=P1⊕P2⊕A7⊕P4⊕A6⊕A5⊕A4⊕P8⊕A3⊕A2⊕A1⊕A0=1
有效信息01101101的13位检二纠一错的海明校验码:1000111011101=11DDH
2.23 设准备传送的数据块信息是1010110010001111,选择生成多项式为G(x)=100101,试求出数据块的CRC码。
解:模2除后,余数R(x)=10011,数据块的CRC码: 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,无错
第三章 作业解答 作业 三 (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 运算终态 00 10100 11 00111
0101010
3.11 说明定点补码和浮点补码加减运算的溢出判断方法。 答:⑴ 定点补码加减运算的溢出判断方法:
① 根据两个操作数的符号与结果的符号判别溢出:????ffffffffffsysxsyxsyxOVR??=+= ② 根据两数相加时产生的进位判别溢出:OVR=Cf⊕C1 ③ 根据变形补码运算后的符号判别溢出: sf1sf2=00,表示结果为正数,无溢出; sf1sf2=11,表示结果为负数,无溢出; sf1sf2=01,表示结果为正溢出; sf1sf2=10,表示结果为负溢出。
⑵ 浮点补码加减运算的溢出判断方法
浮点补码加减运算的溢出通常是指浮点数上溢,浮点数是否溢出是由阶码是否大于浮点数所能表示的最大正阶来判断的。
例如,设浮点数的阶码采用补码表示,双符号位,这时浮点数的溢出与否可由阶码的符号进行判断:
若阶码 [j]补=01 ××?×,则表示出现上溢,需作溢出处理;
符号
若阶码 [j]补=10 ××?×,则表示出现下溢,按机器零处理。 3.14 利用用十进制加减运算算法计算下列各题:
(1) 125+436=? (2) 125-436=? (3) 436-125=? 解: (1) 125+436=561 (2) 125-436=-311 (3) 436-125=311
3.16 设有一个16位定点补码运算器,数据最低位的序号为1。运算器可实现下述功能: (1) A±B→A
(2) B×C→A、C(乘积高位在A中) (3) A÷B→C(商在C中)
请设计并画出运算器第3位及A、C寄存器第三位输入逻辑。加法器本身逻辑可以不画,原始操作数输入问题可以不考虑。 解:见附页
3.19 设一个8位寄存器中的内容为十六进制数C5H,连续经过一次算术右移、一次逻辑左移、一次大循环右移、一次小循环左移。写出每次移位后寄存器的内容和进位标志C的状态。 解:C5H=11000101 C 寄存器
一次算术右移: 1 11100010 一次逻辑左移: 1 11000100 一次大循环右移: 0 11100010 一次小循环左移: 1 11000101
第四章 作业解答
4.1 静态MOS存储器与动态MOS存储器存储信息的原理有何不同?为什么动态MOS存储器需要刷新?一般有哪几种刷新方式?
答:静态MOS存储器利用一个双稳态触发器存储一个二进制位,只要不断电就可以保持其
相关推荐: