第2章计算机中的信息表示习题参考答案-汇编语言与计算机组成原理 答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第2章计算机中的信息表示习题参考答案
1. 设机器数长为8位(含1位符号位在内),写出对应下列各真值的原码、补码和反码。

6413−, 12829
,100,-87
2. 写出下列各数的原码、反码、补码表示(用8位二进制数),其中MSB 是最高位(又是符号位),LSB 是最高位。

如果是小数,小数点在MSB 之后;如果是整数,小数点在LSB 之后。

(1) -35/64 (2)23/128 (3) –127 (4)用小数表示-1 (5)用整数表示-1 解:(1)-35/64 = -0.100011
原码1.1000110 反码1.0111001 补码1.0111010
(2)23/128= 0.0010111
原码0.0010111 反码0.0010111 补码0.0010111 (3) –127=1111111
原码11111111 反码10000000 补码10000001 (4) 用小数表示-1 补码1.0000000 (5) 用整数表示-1
原码10000001 反码11111110 补码111111111
3. 己知[X],求[X]和X .
补原
4. 当十六进制数9B和FF分别表示为原码、补码、反码、移码和无符号数时,所对应的十进制数
各为多少(设机器数采用一位符号位)。

答:
5. 有一个字长为32位的浮点数,符号位1位,阶码8位,用移码表示,尾数23位,用补码表示;基数为2。

请写出:(1)最大数的二进制表示;(2)最小数的二进制表示; (3)规格化数所能表示数的范围。

解:用IEEE754格式(E的取值范围:1~254,留出全0和全1分别表示0和无穷大)
31 30 23 22 20 0
S E M
(1) 最大数的二进制表示:
0 11111110 11111111111111111111111即 2127(2-2-23)
(2) 最小数的二进制表示:
1 11111110 11111111111111111111111即 - 2127(2-2-23)
(3) 规格化数所能表示数的范围:
最小的正数:0 00000001 00000000000000000000001 即2-126(1+2-23)
绝对最小的负数:
1 00000001 00000000000000000000001 即-2-126(1+2-23)
所以范围是: -2127(2-2-23)至-2-126(1+2-23) ,2-126(1+2-23)至2127(2-2-23)
6. 将下列十进制数表示成IEEE754标准的32位浮点规格化数。

(1) 27/64 (2) – 27/64
解:27/64=0.011011=1.1011*2-2
(1) 0 01111101 10110000000000000000000
(2) 1 01111101 10110000000000000000000
7. 设机器数字长为8位(含1位符号位),用补码运算规则计算下列各题。

○1B ;A ,,B A +−==求32
13
649
○2 B ;A ,,B A −−==
求128173219
○3;求B A ,32
9
B ,163A +=−=
○4B ;A B A −=−=求,53,87
○5B ;A B A +−==求,24,115
答:

1A=B ;A ,B +−=求32
13
649 [][][][][]0100010
.11011110
.11001100
.1,0010010.00110100.1,0010010.0=+∴=+∴==∴==B A B A B A B A 补补补原原

2B ;A ,,B A −−==求128
17
3219 [][][][][][]1101
0.110B A 1
0111010.B A 001
0001.0B 1011111.1B 00,10011.0A 1010000.1B 00,10011.0A 补补补补原原=+∴=−∴=−==∴==

3
[][][][][]00
11000.0B A 00
11000.0B A 00100
0.01B 1.1101000,A 10010000.B 1.0011000,A ;
B A 求,32
9
B ,163A 补

补原原=+∴=+∴==∴==+=−=

4 [][][][][][]溢出
?求补补补补原原∴=−∴=−∴==∴==−=−=1110100101001011101101010,0101001101101010,10101111,53,87,B A ,B ,B ,A ,B ,A B ;A B A

5 [][][][][]0001011
11101101011010001,1110011000110001,11100110,24,115,B A ,B A ,B ,
A ,
B ,A B ;A B A =+∴=+∴==∴==+−==补补补原原求
8.已知x 和y,用变形补码计算x-y,同时指出运算结果是否溢出。

(1)x=0.11011 y=-0.11111 (2)x=0.10111 y=0.11011 (3)x=0.11011 y=-0.10011 解:(1)x = 0.11011
溢出
(2)x = 0.10111
x-y = -0.00100
无溢出
(3)x = 0.11011
9. 已知两个十进制数:X = -41,Y = +101试用8位二进制变形补码形式运算X + Y,并讨论结果
的正确性。

解:
X=-41=(-101001)2[X]补=11 1010111
Y=101=(+1100101)2 [Y]补=00 1100101
采用变形补码运算
[X+Y]补 = [X]补 +[Y]补
= 11 1010111 + 00 1100101
= 00 0111100
双符号位为:00 无溢出,结果正确;
即[X+Y]补=00111100
10. 已知两个十进制数:X=-41,Y=-101试用8位二进制变形补码形式运算X+Y,并讨论结果的正确性。

解:
X=-41=(-101001)2[X]补=11 1010111
Y=-101=(-1100101)2 [Y]补=11 0011011
采用变形补码
[X+Y]补 = [X]补 +[Y]补
= 11 1010111 + 11 0011011
= 10 01110010
双符号位为:10 有负溢出,结果不正确;
11. 已知两个二进制数:X=0.11001,Y=0.00111 试用变形补码形式运算X+Y,并讨论结果的正确性。

解:
X=0.11001 [X]补=00.11001
Y=0.00111 [Y]补=00.00111
采用变形补码运算:
[X+Y]补 = [X]补 +[Y]补
= 00.11001+00.00111
= 01.00000
双符号位为:01 有正溢出,结果不正确;
12. 已知两个二进制数:X = 0.11001,Y = -0.10111 试用变形补码形式运算X+Y,并讨论结果的正确性。

解:
X=0.11001 [X]补=00.11001
Y=-0.10111 [Y]补=11.01001
用变形补码运算:
[X+Y]补 = [X]补 +[Y]补
= 00.11001+11.01001
= 00.00010
双符号位为:00 无溢出,结果正确;
即[X+Y]补=0.00010
13. 已知两个二进制数:X=110011,Y=101101 试用变形补码形式运算X+Y,并讨论结果的正确性。

解:
X=110011, [X]补=00 110011
Y=101101 [Y]补=00 101101
采用变形补码运算:
[X+Y]补 = [X]补 +[Y]补
= 00 110011 + 00 101101
= 01 100000
双符号位为:01 有正溢出,结果不正确;
14. 已知两个二进制数:X=110011,Y=101101试用变形补码形式运算X-Y,并讨论结果的正确性。

解:
X=110011, [X]补=00 110011
Y=101101 [-Y]补=11 010011
采用变形补码运算:
[X - Y]补 = [X]补 +[-Y]补
= 00 110011 + 11 010011
= 00 000110
双符号位为:00 无溢出,结果正确;
[X - Y]补=0 000110
15. 已知两个二进制数:X=0.11001,Y=0.00111 试用变形补码形式运算X-Y,并讨论结果的正确性。

解:
X=0.11001 [X]补=00.11001
Y=0.00111 [-Y]补=11.11001
采用变形补码运算:
[X - Y]补 = [X]补 +[-Y]补
= 00.11001 + 11.11001
= 00.10010
双符号位为:00 无溢出,结果正确;
[X - Y]补=0.10010
16. 已知x和y,用变形补码计算x+y,同时指出结果是否溢出。

(1)x=0.11011 y=0.00011
(2)x=0.11011 y=-0.10101
(3)x=-0.10110 y=-0.00001
解:(1)x = 0.11011, y = 0.00011
x+y = 0.11110
无溢出
x+y = 0.00110
无溢出
(3)x = -0.10110
x+y = -0.10111
无溢出
17.已知x和y,用变形补码计算x-y,同时指出运算结果是否溢出。

(1)x=0.11011 y=-0.11111
(2)x=0.10111 y=0.11011
(3)x=0.11011 y=-0.10011
解:(1)x = 0.11011
溢出
(2)x = 0.10111
x-y = -0.00100
无溢出
(3)x = 0.11011
18. 已知两个无符号二进制数:X=1001,Y=1101 ,用原码一位乘法完成X × Y。

解:
X=1001,Y=1101
B :1001被乘数 A : 0000
C :1101乘数
0000 1101 C 0=1 累加1 +B
1001
1001
移位1 0100 1110 C 0=0
累加2 +0 0000
0100
移位2 0010 0111 C 0=1
累加3 +B 1001
1011
移位3 0101 1011 C 0=1
累加4 +B 1001
1110
移位4 0111 0101 (结果)
19. 已知两个无符号二进制数:X = 1101,Y = 1010 ,用原码一位乘法完成X × Y。

解:
X=1101,Y=1010
B:1101被乘数 A: 0000 C:1010乘数 0000 1010 C 0=0 累加1 +0 0000 0000 移位1 0000 0101 C 0=1 累加2 +B 1101 1101 移位2 0110 1010 C 0=0 累加3 +0 0000 0110 移位3 0011 0101 C 0=1 累加4 +B 1101 10000 移位4 1000 0010 (结果)
20.用原码阵列乘法器、补码阵列乘法器分别计算x ×y。

(1)x = 0.11011 y = - 0.11111 (2)x = -0.11111 y = - 0.11011 解:(1)原码阵列
x = 0.11011, y = -0.11111 符号位: x 0⊕y 0 = 0⊕1 = 1 [x]原 = 11011, [y]原 = 11111
[x*y]原 = 1, 11 0100 0101
直接补码阵列
[x]补 = (0)11011, [y]补 = (1)00001
带求补器的补码阵列
[x]补 = 0 11011, [y]补 = 1 00001 乘积符号位单独运算0⊕1=1
尾数部分算前求补输出│X│=11011,│y│=11111
(2) 原码阵列
x = -0.11111, y = -0.11011 符号位: x 0⊕y 0 = 1⊕1 = 0 [x]补 = 11111, [y]补 = 11011
[x*y]补 = 0,11010,00101
直接补码阵列
[x]补 = (1)00001, [y]补 = (1)00101
[x*y]补 = 0,11010,00101
带求补器的补码阵列
[x]补 = 1 00001, [y]补 = 1 00101
乘积符号位单独运算1⊕1=0
尾数部分算前求补输出│X│=11111,│y│=11011
X×Y=0.1101000101
21.用原码阵列除法器计算x÷y。

(1)x = 0.11000 y = - 0.11111
(2)x = -0.01011 y = - 0.11001
解:(1) 符号位 Sf = 0⊕1 = 1
去掉符号位后:[y’]补 = 00.11111
[-y’]补 = 11.00001
52*00111.0,11000.0−−=−=余数y
x
(2) 符号位 Sf = 1⊕0 = 1
去掉符号位后:[y’]补 = 00.11001 [-y’]补 = 11.00111
52*10111.0,01110.0−−=−=余数y
22.设阶码3位,尾数6位,按浮点运算方法,完成下列取值的[x+y],[x-y]运算。

(1)x = 2-011 × 0.100101 y = 2-010 ×(- 0.011110) (2)x = 2-101 ×(-0.010110) y = 2-100 × (0.010110)
解:设两数均以补码表示,阶码采用双符号位,尾数采用单符号位,则它们的浮点表示分别为:
题(1) [x]浮=11 101,0.100101 [y]浮=11 110,1.100010 (1)求阶差并对阶
ΔE=Ex-Ey=[Ex]补-[Ey]补=[Ex]补+[-Ey]补=11 101 + 00 010 =11 111 即ΔE 为-1,x 阶码小,应使Mx 右移1位,Ex 加1 [x]浮=11 110,0.010010(1) (2)尾数求和
0.010010(1) + 1.100010 1.110100(1) (3)规格化
可见尾数运算结果的符号位与最高位相同,应执行左规格化处理,每左移尾数一次,相应阶码减1,所以结果尾数为1.010010,阶码为11 100 (4)舍入处理 对本题不需要。

(5)判溢出
阶码两符号位为11,不溢出,故最后结果为 [x]浮+[y]浮=11 100,1010010 真值为2-100*(-0.101110)
(2)尾数求差
0.010010(1) + 0.011110 0.110000(1) [x]浮-[y]浮=11 100,0.110001 真值为2-100*0.110001
题(2) [x]浮=11 011,1.101010 [y]浮=11 100,0.010110 (1)求阶差并对阶
ΔE=Ex-Ey=[Ex]补-[Ey]补=[Ex]补+[-Ey]补=11 011 + 00 100 =11 111 即ΔE 为-1,x 阶码小,应使Mx 右移1位,Ex 加1 [x]浮=11 100,1.110101(0) (2)尾数求和
1.110101(0) + 0.010110 0.001011(0) (3)规格化
可见尾数运算结果的符号位与最高位相同,应执行左规格化处理,每左移尾数一次,相应阶码减1,所以结果尾数为0.101100,阶码为11 010 (4)舍入处理 对本题不需要。

(5)判溢出
阶码两符号位为11,不溢出,故最后结果为 [x]浮+[y]浮=11 010,010100 真值为2-110*(0.010100)
23.设数的阶码为3位,尾数6位,用浮点运算方法,计算下列各式 (1)(23 × 13/16)×[24 ×(-9/16)] (2) (2-2 × 13/32) ÷ ( 23 ×15/16)
解:(1) Ex = 0011, Mx = 0.110100
Ey = 0100, My = 0.100100 Ez = Ex+Ey = 0111
规格化: 26*0.111011
(2)Ex = 1110, Mx = 0.011010
Ey = 0011, My = 0.111100
Ez = Ex-Ey = 1110+1101 = 1011
[Mx]补 = 00.011010
商 = 0.110110*2-6, 余数=0.101100*2-6
24. 某加法器进位链小组信号为C4 C3 C2 C1 ,低位来的进位信号为C0 ,请分另按下述两种方法写出C4 C3 C2 C1 逻辑表达式:
(1)串行进位方式 (2)并行进位方式
解:
4位加法器如上图, 1
111)()(−−−−⊕+=++=++=i i i i i i i i i i i i i i i i i C B A B A C B A B A C B C A B A C
(1)串行进位方式
C 1 = G 1+P 1C 0 其中:G 1 = A 1B 1 P1 = A 1⊕B 1(A 1+B 1也对) C 2 = G 2+P 2C 1 G 2 = A 2B 2 P 2 = A 2⊕B 2 C 3 = G 3+P 3C 2 G 3 = A 3B 3 P 3 = A 3⊕B 3 C 4 = G 4+P 4C 3 G 4 = A 4B 4 P 4 = A 4⊕B 4 (2)并行进位方式 C 1 = G 1+P 1C 0
C 2 = G 2+P 2G 1+P 2P 1C 0
C 3 = G 3+P 3G 2+P 3P 2G 1+P 3P 2P 1C 0
C 4 = G 4+P 4G 3+P 4P 3G 2+P 4P 3P 2G 1+P 4P 3P 2P 1C 0
25. 若给定全加器、半加器和门电路,请设计实现余3码的十进制加法器的逻辑线路。

解:(1)余3码到十进制的转换电路
如图所示电路是一个用四位加法器构成的代码变换电路,若输入信号E 3、E 2、E 1、E 0为余3BCD 码,则输出端S 3S 2S 1S 0是代码。

BCD 8421
(2)在十进制运算时,当相加二数之和大于9时,便产生进位。

可是用BCD 码完成十进制数运算时, 当和数大于9时,必须对和数进行加6修正。

这是因为,采用BCD 码后,在二数相加的和数小于等于 9时,十进制运算的结果是正确的;而当相加的和数大于9时,结果不正确,必须加6修正后才能得 出正确的结果。

因此,当第一次近似求值时,可将它看成每一级是一个4位二进制加法器来执行, 就好像xi 和yi 是普通4位二进制数一样。

设S'i 代表这样得到的4位二进制数和,C'i +1为输出 进位,而S i 代表正确的BCD 和,C i +1代表正确的进位,那么当xi +yi +C i <10时, S i =S'i
当X i +Y i +C i ≥10时, S i =S'i +6
显然,当C'i +1=1或S'i ≥10时,输出进位C i +1=1。

因此,可利用C i +1的状态来产生所要求的 校正因子:C i +1=1时校正因子为6;C i +1=0时校正因子为0。

在图2.3(b)中,4位行波式进位的二 进制加法器计算出和S'i ,然后S'i 经过第二级二进制加法器加上0或6,则产生最终结果S i 。

解二:
余3码编码的十进制加法器规则如下:两个一位十进制数的余3码相加,如果无进位,则从和数中减去3(加上1101);如结果有进位,则得和数和余3码。

试设计余3码编码的十进制加法器单元电路。

解:设余三码编码的两个运算数为X
i 和Y
i
,第一次用二进制加法求和运算的和数为S
i
’,
进位为C
i+1’,校正后所得的余三码和数为S
i
,进位为C
i+1
,则有:
X
i = X
i3
X
i2
X
i1
X
i0
Y
i = Y
i3
Y
i2
Y
i1
Y
i0
S
i ’ = S
i3
’S
i2
’S
i1
’S
i0

i3i3i2i2i1i1i0i0
根据以上分析,可画出余三码编码的十进制加加法器单元电路如图所示。

26.设有寄存器、74181和74182器件,请设计具有并行运算功能的16位(含一位符号位)补码二进制加减法运算器。

画出运算器的逻辑框图。

解:
(1)用集成电路构成ALU 的原理
74181 是一种具有并行进位的多功能ALU 芯片,每4 位构成一组,组内是并行进位的。


教材图2-13 是用正逻辑和负逻辑表示的4 位74181 芯片框图,表2-19 是74181 芯片的各种运算功能表。

74181 芯片本身是4 位的,也就是说它可以进行4 位二进制数的各种运算。

74181 芯片的
结构很适合连成不同位数的ALU,由4 片74181 ALU 可以构成一个16 位的ALU,由16 片74181 ALU 可以构成一个64 位的ALU。

(2)利用74181 芯片构成16 位ALU 的原理
74181 芯片的结构很适合连成不同位数的ALU,每片74181 芯片作为一个4 位的小组。


于芯片给出了C n+4、P i 和G i,所以用该芯片既可以构成组间串行进位的ALU,也可以构成组间
并行进位的ALU。

①片内进位是快速的,片间进位是逐片传递的,如图所示。

图2-3 片内快速进位、片间逐片传递的结构框图
② 片间、片内均是快速的。

• 超前进位的74182 芯片的结构框图如图2-4 所示。

图2-4 超前进位的结构框图
说明:G0~G3、P0~P3 为单片74181 的G、P;C n 为组进位输入,P、G 为组进位输出,
用于将4 组16 位快速的ALU 扩展成为64 位快速的ALU;C n+z、C n+y、C n+x 分别是单片74181
间的进位。

• 片间、片内均由快速进位的16 位ALU 构成,如图2-5所示。

说明:片间采用并行快速进位时,只需要增加一片74182 芯片。

74182 芯片是与74181 芯
片配套的产品,是一个产生进位信号的部件。

由于74181 提供了小组的进位传递函数P i 和进位 生成函数G i,74182 可以利用它们来作为输入函数,以并行的方式给出每个小组的最高位进位
信号。

74182 在这里的用途是作为第2 级并行进位系统,74182 并行给出的3 个进位信号分别是 C4、C8、C12,这3 个进位信号分别作为高位74181 的进位输入信号,这就可以构成74181 芯片
间快速进位的16 位ALU。

图2-5 片间、片内均是快速进位的结构框图
27. 设有效信息为110,试用生成多项式G (x )=11011,将其编成循环冗余校验码。

有一个(7,4)码,其生成多顶式G (x )=x 3+x+1,写出代码1001的循环冗余校验码。

解:有效信息M(x)=110=x 2+x (n =3)
;由G (x )=11011=x 4+x 3+x+1 得 k +1=5所以k =4
将有效信息左移四位后再被G (x )模2除,即 M(x)·x 4=1100000=x 6+x 5
11011
1100
100110111100000)()(4+==x G x x M (模2除),所以 M (x )·x 4+R (x )=1100000+1100
=1101100为CRC 码。

28.有一个(7,4)码,其生成多顶式G (x )=x 3+x+1,写出代码1001的循环冗余校验码。

解:有效信息M(x)=1001=x 3+1 (n =4)
;由G (x )=x 3+x+1=1011 得 k +1=4所以k =3 将有效信息左移三位后再被G (x )模2除,即 M(x)·x 3=1001000=x 6+x 3
1011110
10101011
1001000)()(3+==x G x x M (模2除),所以 M (x )·x 3+R (x )=1001000+110=1001110
为CRC 码。

相关文档
最新文档