计算机组成原理第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

溢出?

机器零处理 报错

尾数相除

结束