计算机组成原理课后习题答案(一到九章) 下载本文

(2)已知两个浮点数的机器数表示为EF80H和FFFFH,求它们所对应的十进制真值。 (3)已知浮点数的机器数表示为:

[x]补=1 1111001 00100101,[y]补=1 1110111 00110100

试按浮点加减运算算法计算[x±y]补。 3.9 已知某机浮点数表示格式如下: 0 1 数符 阶符 2 5 阶 码 6 11 尾 数

其中,浮点数尾数和阶码的基值均为2,阶码用移码表示,尾数用补码表示。设:

-+

x=0.110101×2001 y=-0.100101×2001 试用浮点运算规则计算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×2001=-0.111110×21 阶码相加:[ex+ey]移=[ex]移+[ey]补=01111+00001=10000 尾数可采用定点补码乘法(双符号位):[Sx×Sy]补=[Sx]补×[Sy]补=11.100001010111

--

规格化:[x×y]补=1 01111 000010 x×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) OR 1.010100(校正) 规格化:[x/y]补=1 01111 010011 OR 1 01111 010100

--

x/y=-0.101101×2001 OR -0.101100×2001 3.10 A C Cn Cn+1 移 ALU AND1 Cn Cn+1 CR 位 脉 冲 & AND2 Cn Cn+1 时钟脉冲 Q 结束 B B 寄存器B CT 启动 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 00 00000 00 10100 B 11 00111 11 00111 C 1001100 0101010

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

① 根据两个操作数的符号与结果的符号判别溢出:OVR=xfyfsf+xfyfsf=?xf?sf??yf?sf? ② 根据两数相加时产生的进位判别溢出:OVR=Cf⊕C1 ③ 根据变形补码运算后的符号判别溢出:

sf1sf2=00,表示结果为正数,无溢出; sf1sf2=11,表示结果为负数,无溢出; sf1sf2=01,表示结果为正溢出; sf1sf2=10,表示结果为负溢出。 ⑵ 浮点补码加减运算的溢出判断方法

浮点补码加减运算的溢出通常是指浮点数上溢,浮点数是否溢出是由阶码是否大于浮点数所能表示的最大正阶来判断的。

例如,设浮点数的阶码采用补码表示,双符号位,这时浮点数的溢出与否可由阶码的符号进行判断: 若阶码 [j]补=01 ××?×,则表示出现上溢,需作溢出处理; 符号

若阶码 [j]补=10 ××?×,则表示出现下溢,按机器零处理。

3.12 说明定点原码除法和定点补码除法运算的溢出判断方法。 答:定点原码不恢复余数除法的溢出算法为:

因为在定点小数运算时,若|被除数|>|除数|,则除法将发生溢出,不能进行除法运算。因此,如果在第一次上商时得到的商为“1”,则表示除法发生溢出。

定点补码不恢复余数除法的溢出算法为:

当被除数[x]补与除数[y]补同号时,如果余数[r]补与[y]补同号,且上商为“1”,则表示商溢出。当被除数[x]补

与除数[y]补异号时,如果余数[r]补与[y]补异号,且上商为“0”,则表示商溢出。

3.13 比较舍入方法中截断法、恒置“1”法和0舍1入法的优缺点。 答:⑴ 截断法(恒舍法)

截断法是:将右移移出的值一律舍去,余下的不作任何改变。该方法简单,精度较低。 ⑵ 0舍1入法

0舍1入法的方法是:若右移时被丢掉数位的最高位为0,则舍去;若右移时被丢掉数位的最高位为1,则将1加到保留的尾数的最低位。

“0舍1入”法类似于十进制数的“四舍五入”。其主要优点是单次舍入引起的误差小,精度较高;其缺点是加1时需多做一次运算,而且可能造成尾数溢出,需要再次右规。

⑶ 末位恒置1法

末位恒置1法也称冯·诺依曼舍入法。其方法是:尾数右移时,无论被丢掉的数位的最高位为0还是为1,都将保留的尾数的最低位恒置为1。

末位恒置1法的主要优点是舍入处理不用做加法运算,方法简单、速度快且不会有再次右规的可能,并且没

有积累误差,是常用的舍入方法。其缺点是单次舍入引起的误差较大。

3.14 利用用十进制加减运算算法计算下列各题:

(1) 125+436=? (2) 125-436=? (3) 436-125=? 解: (1) 125+436=561

(2) 125-436=-311 (3) 436-125=311

3.15 参照第二章表2-12给出的余3码的编码规则,设计利用余3码进行十进制加法的修正逻辑。 答:余3码的编码规则:

十进制数 0 1 2 3 4 5 6 7 8 9 余3码 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100

余3码十进制加法器运算结果的修正关系 十进制数 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 用余3码表示的 十进制和数 F4F3F2F1 C?40 0011 0 0100 0 0101 0 0110 0 0111 0 1000 0 1001 0 1010 0 1011 0 1100 1 0011 1 0100 1 0101 1 0110 1 0111 1 1000 1 1001 1 1010 1 1011 1 1100 两个余3码按二进制规则相加得到的和数 C4 S4S3S2S1 0 0110 0 0111 0 1000 0 1001 0 1010 0 1011 0 1100 0 1101 0 1110 0 1111 1 0000 1 0001 1 0010 1 0011 1 0100 1 0101 1 0110 1 0111 1 1000 1 1001 加 “0011” 修 正 “+3” 修正逻辑 加 “1101” 修 正 “-3”

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

3.20 已知寄存器A的内容为01011010,寄存器B的内容为11011011,分别写出经过下列移位操作后,寄存器A、B中的内容。

(1)算术左移两位。 (2)逻辑左移两位。 (3)算术右移两位。 (4)逻辑右移两位。

解:寄存器A的内容为01011010 寄存器B的内容为11011011

c c

(1)算术左移两位 1 01101000 (1)算术左移两位。 1 01101100 移位溢出 (2)逻辑左移两位。 1 01101000 (2)逻辑左移两位。 1 01101100 (3)算术右移两位。 1 00010110 (3)算术右移两位。 1 11110110 (4)逻辑右移两位。 1 00010110 (4)逻辑右移两位。 1 00110110

3.21 选择题

(1) 运算器的核心部分是 C 。

A. 数据总线 B. 累加寄存器 C. 算术逻辑运算单元 D. 多路开关 (2) 在浮点运算中下面的论述正确的是 C 。

A. 对阶时应采用向左规格化

B. 对阶时可以使小阶向大阶对齐,也可以使大阶向小阶对齐

C. 尾数相加后可能会出现溢出,但可采用向右规格化的方法得出正确结论 D. 尾数相加后不可能得出规格化的数

(3) 当采用双符号位进行数据运算时,若运算结果的双符号位为01,则表明运算 B 。

A. 无溢出 B. 正溢出 C. 负溢出 D. 不能判别是否溢出 (4) 补码加法运算的规则是 B 。

A. 操作数用补码表示,符号位单独处理 B. 操作数用补码表示,连同符号位一起相加 C. 操作数用补码表示,将加数变补,然后相加 D. 操作数用补码表示,将被加数变补,然后相加 (5) 原码乘除法运算要求 C 。

A. 操作数必须都是正数 B. 操作数必须具有相同的符号位 C. 对操作数符号没有限制 D. 以上都不对

(6) 进行补码一位乘法时,被乘数和乘数均用补码表示,运算时 A 。