计算机组成原理第4章作业参考答案
- 格式:doc
- 大小:67.50 KB
- 文档页数:6
第4章部分习题参考答案
【4-4】已知X和Y,试用它们的变形补码计算出X + Y,并指出结果是否溢出
(3)X = -0.10110,Y = -0.00001
解:[X]补 = 1.01010 [Y]补 = 1.11111
1 1 . 0 1 0 1 0
+ 1 1 . 1 1 1 1 1 1 1 . 0 1 0 0 1
无溢出,X+Y = -0.10111
【4-5】已知X和Y,试用它们的变形补码计算出X - Y,并指出结果是否溢出
(3)X = 0.11011,Y = -0.10011
解:[X]补 = 0.11011 [-Y]补 = 0.10011
0 0 . 1 1 0 1 1
+ 0 0 . 1 0 0 1 1 0 1 . 0 1 1 1 0
结果正溢
【4-8】分别用原码乘法和补码乘法计算X * Y
(1)X = 0.11011,Y = -0.11111
法一:原码一位乘算法
解:|X| = 0.11011→B |Y| = 0.11111→C 0→A
A C 说明
0 0. 0 0 0 0 0 1 1 1 1 1 +0 0. 1 1 0 1 1 C5 = 1, +|X| 0 0. 1 1 0 1 1 0 0. 0 1 1 0 1 1 1 1 1 1 部分积右移一位→ +0 0. 1 1 0 1 1 C5 = 1, +|X| 0 1. 0 1 0 0 0 0 0. 1 0 1 0 0 0 1 1 1 1 部分积右移一位→ +0 0. 1 1 0 1 1 C5 = 1, +|X| 0 1. 0 1 1 1 1 0 0. 1 0 1 1 1 1 0 1 1 1 部分积右移一位→ +0 0. 1 1 0 1 1 C5 = 1, +|X| 0 1. 1 0 0 1 0 0 0. 1 1 0 0 1 0 1 0 1 1 部分积右移一位→ +0 0. 1 1 0 1 1 C5 = 1, +|X| 0 1. 1 0 1 0 0 0 0. 1 1 0 1 0 0 0 1 0 1 部分积右移一位→
|X * Y| = 0.1101000101
Ps = Xs ⊕ Ys = 0 ⊕ 1 = 1
X*Y = -0.1101000101
法二:补码一位乘算法
解:[X]补 = 0.11011→B [Y]补 = 1.00001→C
[-X]补 = 1.00101 0→A
A C 附加 说明 0 0. 0 0 0 0 0 1 0 0 0 0 1 0 +1 1. 0 0 1 0 1 C4C5 = 10 -|X| 1 1. 0 0 1 0 1 1 1. 1 0 0 1 0 1 1 0 0 0 0 1 部分积右移一位→ +0 0. 1 1 0 1 1 C4C5 = 01 +|X| 0 0. 0 1 1 0 1 0 0. 0 0 1 1 0 1 1 1 0 0 0 0 部分积右移一位→ +0 0. 0 0 0 0 0 C4C5 = 00 +0 0 0. 0 0 1 1 0 0 0. 0 0 0 1 1 0 1 1 1 0 0 0 部分积右移一位→ +0 0. 0 0 0 0 0 C4C5 = 00 +0 0 0. 0 0 0 1 1 0 0. 0 0 0 0 1 1 0 1 1 1 0 0 部分积右移一位→ +0 0. 0 0 0 0 0 C4C5 = 00 +0 0 0. 0 0 0 0 1 0 0. 0 0 0 0 0 1 1 0 1 1 1 0 部分积右移一位→ +1 1. 0 0 1 0 1 C4C5 = 10 -|X| 1 1. 0 0 1 0 1
[X*Y]补= 11.0010111011
X*Y = -0.1101000101
【4-10】计算X/Y
(2)X = -0.10101,Y = 0.11011
原码恢复余数法:
解:|X| = -0.101010→A |Y| = 0.110110→B
[-|Y|]补 = 1.00101 0→C
0 0. 1 0 1 0 1
0 0 0 0 0 0 +1 1. 0 0 1 0 1 -|Y| 1 1. 1 1 0 1 0 <0 +0 0. 1 1 0 1 1 +|Y| 0 0. 1 0 1 0 1 0 0 0 0 0 0 商0 0 1. 0 1 0 1 0 0 0 0 0 0 0 左移 ← +1 1. 1 1 0 0 1 -|Y| 0 0. 0 1 1 1 1 0 0 0 0 0 1 >0,商1 0 0. 1 1 1 1 0 0 0 0 0 1 0 左移← +1 1. 0 0 1 0 1 -|Y| 0 0. 0 0 0 1 1 0 0 0 0 1 1 >0,商1 0 0. 0 0 1 1 0 0 0 0 1 1 0 左移← +1 1. 0 0 1 0 1 -|Y| 1 1. 0 1 0 1 1 <0 +0 0. 1 1 0 1 1 +|Y| 0 0. 0 0 1 1 0 0 0 0 1 1 0 商0 0 0. 0 1 1 0 0 0 0 1 1 0 0 左移← +1 1. 0 0 1 0 1 -|Y| 1 1.1 0 0 0 1 <0 +0 0. 1 1 0 1 1 +|Y| 0 0. 0 1 1 0 0 0 0 1 1 0 0 商0 0 0. 1 1 0 0 0 0 1 1 0 0 0 左移← +1 1. 0 0 1 0 1 -|Y| 1 1. 1 1 1 0 1 <0 +0 0. 1 1 0 1 1 +|Y| 0 0. 1 1 0 0 0 0 1 1 0 0 0 商0
Qs = Xs⊕Ys = 0⊕1 = 1
Q = -0.11000,R = 0.11000*2-5
【4-11】设浮点数的阶码和尾数部分均用补码表示,按照浮点数的运算规则,计算下列各题
(2)X = 2-101*0.101100,Y = 2-100*(-0.101000)
解:[X]补 = 1011;0.101100
[Y]补 = 1100;1.011000
对阶:
△E = Ex – Ey = -5 -(-4)= -1
Ex < Ey,将Mx右移一位,Ex+1→Ex
[X]’补=1011;0.010110
尾数求和:
0 0. 0 1 0 1 1 0
+1 1. 0 1 1 0 0 0 1 1. 1 0 1 1 1 0
尾数结果规格化:尾数左移1位,阶码减1
[X+Y]补= 1011;1.011100
X+Y = (-0.100100)*2-101
减法算法过程略,X-Y = 0.111110 * 2-100
【4-13】用流程图描述浮点除法运算的算法步骤
设:被除数X = Mx * 2Ex; 除数Y = My * 2 Ey
开始
|Mx|<|My|?
Mx右移1位,Ex+1→Ex
Ex-Ey
溢出?
否
机器零处理 报错
尾数相除
结束