当前位置:首页 >> 工学 >>

计算机组成原理课后答案(第二版)


计算机的运算方法
第 六 章

9

1. 最少用几位二进制数即可表示任 一五位长的十进制正整数? 解:五位长的十进制正整数中,最 大的数99999满足条件:216(=65536) <99999<217(=131072),故最少用17位 二进制数即可表示任一五位长的十进制 正整数。

2. 已知X=0.a1a2a3a4a5a6(ai为0或 1),讨论下列几种情况时ai各取何值。 (1)X > 1/2; (2)X ? 1/8; (3)1/4 ? X > 1/16 解: (1)若要X > 1/2,只要a1=1, a2~a6不全为0即可(a2 or a3 or a4 or a5 or a6 = 1); (2)若要X ? 1/8,只要a1~a3不全 为0即可(a1 or a2 or a3 =1), a4~a6可任 取0或1;

(3)若要1/4 ? X > 1/16,只要a1=0,a2 可任取0或1; 当a2=0时,若a3=0,则必须a4=1, 且a5、a6不全为0(a5 or a6=1;若a3=1, 则a4~a6可任取0或1; 当a2=1时, a3~a6可任取0或1。 3. 设x为整数,[x]补=1,x1x2x3x4x5, 若要求 x < -16,试问 x1~x5 应取何值? 解:若要x < -16,需 x1=0,x2~x5 任 意。(注:负数绝对值大的反而小。)

4. 设机器数字长为8位(含1位符号位在内), 写出对应下列各真值的原码、补码和反码。 -13/64,29/128,100,-87 解:真值与不同机器码对应关系如下:


十进制


二进制

-13/64 29/128 100 -87

-0.00 1101 0.001 1101 110 0100 -101 0111

原 码 反 码 1.001 1010 1.110 0101 0.001 1101 0.001 1101 0,110 0100 0,110 0100 1,101 0111 1,010 1000

补 码 1.110 0110 0.001 1101 0,110 0100 1,010 1001

5. 已知[x]补,求[x]原和x。 [x1]补=1. 1100; [x2]补=1. 1001; [x3]补=0. 1110; [x4]补=1. 0000; [x5]补=1,0101; [x6]补=1,1100; [x7]补=0,0111; [x8]补=1,0000; 解:[x]补与[x]原、x的对应关系如下:
[x]补 1.1100 1.1001 0.1110 1.0000 1,0101 1,1100 0,0111 1,0000 [x]原 1.0100 1.0111 0.1110 无 1,1011 1,0100 0,0111 无 x(二进制) x(十进制) -0.0100 -1/4 -0.0111 -7/16 +0.1110 +7/8 -1.0000 -1 -1011 -11 -0100 -4 +0111 +7 -10000 -16

6. 设机器数字长为8位(含1位符 号位在内),分整数和小数两种情况 讨论真值x为何值时,[x]补=[x]原成立。 解: 当x为小数时,若x ? 0,则 [x]补=[x]原成立; 若x < 0,则当x= -1/2时, [x]补=[x]原成立。 当x为整数时,若x ? 0,则 [x]补=[x]原成立; 若x < 0,则当x= -64时, [x]补=[x]原成立。

7. 设x为真值,x*为绝对值,说明 [-x*]补=[-x]补能否成立。 解:当x为真值,x*为绝对值时, [-x*]补=[-x]补不能成立。 [-x*]补=[-x]补 的结论只在x>0时成立。当x<0时,由 于[-x*]补是一个负值,而[-x]补是一个正 值,因此此时[-x*]补不等于[-x]补。 8. 讨论若[x]补>[y]补,是否有x>y? 解:若[x]补>[y]补,不一定有x>y。 [x]补 > [y]补时 x > y的结论只在 x > 0、y > 0,及 x<0、y<0时成立。当x>0、 y<0时,有x>y,但由于负数补码的符 号位为1,则[x]补<[y]补。同样,当x<0、 y >0时,有x < y,但[x]补>[y]补。

注意: 1)绝对值小的负数其值反而大,且 负数的绝对值越小,其补码值越大。因 此, 当x<0、y<0时,若[x]补>[y]补, 必有x>y。 2)补码的符号位和数值位为一体, 不可分开分析。 3)完整的答案应分四种情况分析, 但也可通过充分分析一种不成立的情况 获得正确答案。 4)由于补码0的符号位为0,因此x、 y=0可归纳到>0的一类情况讨论。

9. 当十六进制数9B和FF分别表示为原码、补码、 反码、移码和无符号数时,所对应的十进制数各为多 少(设机器数采用一位符号位)? 解:真值和机器数的对应关系如下:
十六 进制 9BH

真值
二进制 十进制

无符 号数
1001 1011

原码 反码 补码 移码
-11 011 -1100100 -1100101 +11011

155
1111 1111

-27
-1111111

-100 -0

-101 -1

+27 +127

FFH

二进制 十进制

-0000000 -0000001 +1111111

255

-127

注意: 1)9BH、FFH为机器数,本身含符号位。 2)移码符号位与原、补、反码相反,数值同补码。

10. 在整数定点机中,设机器数采用一位符号位, 写出±0的原码、补码、反码和移码,得出什么结论? 解:0的机器数形式如下:

真值
+0 -0

原码

补码

反码

移码

0,00…0 0,00…0 0,00…0 1,00…0 1,00…0 0,00…0 1,11…1 1,00…0

结论:补、移码0的表示唯一,原、反码不唯一。 注意:本题不用分析不同编码间的其他特性。 11. 已知机器数字长为4位(其中1位为符号位), 写出整数定点机和小树定点机中原码、补码和反码的 全部形式,并注明其对应的十进制真值。

解:机器数与对应的真值形式如下:
真值
(二进制)

真值
(十进制)

原码
0,111 0,110 0,101 0,100 0,011 0,010 0,001 0,000

反码

补码

整 数

+111 +110 +101 +100 +011 +010 +001 +000

+7 +6 +5 +4 +3 +2 +1 +0

同 原 码

同 原 码

续表1:
真值 -1000 -111 -110 -101 -100 -011 -010 -001 -000 真值 -8 -7 -6 -5 -4 -3 -2 -1 -0

原码
无 1,111 1,110 1,101 1,100 1,011 1,010 1,001 1,000

反码
无 1,000 1,001 1,010 1,011 1,100 1,101 1,110 1,111

补码
1,000 1,001 1,010 1,011 1,100 1,101 1,110 1,111 0,000

(二进制) (十进制)

整 数

续表2:
真值
(二进制)

真值
(十进制)

原码
0.111 0.110 0.101 0.100 0.011 0.010 0.001 0.000

反码

补码





+0.111 +0.110 +0.101 +0.100 +0.011 +0.010 +0.001 +0.000

+7/8 +3/4 +5/8 +1/2 +3/8 +1/4 +1/8 +0

同 原 码

同 原 码

续表3:
真值
(二进制)

真值
(十进制)

原码 反码
无 1.111 1.110 1.101 1.100 1.011 1.010 1.001 1.000 无 1.000 1.001 1.010 1.011 1.100 1.101 1.110 1.111

补码
1.000 1.001 1.010 1.011 1.100 1.101 1.110 1.111 0.000

小 数

-1.000 -0.111 -0.110 -0.101 -0.100 -0.011 -0.010 -0.001 -0.000

-1 -7/8 -3/4 -5/8 -1/2 -3/8 -1/4 -1/8 -0

12. 设浮点数格式为:阶码5位(含1 位阶符),尾数11位(含1位数符) 。写 出51/128、27/1024、7.375、-86.5所对应 的机器数。要求如下: (1)阶码和尾数均为原码; (2)阶码和尾数均为补码; (3)阶码为移码,尾数为补码。 (注:题意中应补充规格化数的要求。) 解:据题意画出该浮点数的格式:
1 阶符 4 阶码 1 数符 10 尾数

注意: 1)正数补码不“变反+1”。 2)机器数末位的0不能省。

将十进制数转换为二进制: x1=51/128=(0.011 001 1)2 =2-1 ?(0.110 011)2 x2= -27/1024=(-0.000 001 101 1)2 =2-5 ?(-0.110 11)2 x3=7.375=(111.011)2 =23 ?(0.111 011)2 x4= -86.5=(-1 010 110.1)2 =27 ?(-0.101 011 01)2 则以上各数的浮点规格化数为: (1)[x1]浮=1,0001;0.110 011 000 0 (2)[x1]浮=1,1111;0.110 011 000 0 (3)[x1]浮=0,1111;0.110 011 000 0

(1)[x2]浮=1,0101;1.110 110 000 0 (2)[x2]浮=1,1011;1.001 010 000 0 (3)[x2]浮=0,1011;1.001 010 000 0 (1)[x3]浮=0,0011;0.111 011 000 0 (2)[x3]浮=0,0011;0.111 011 000 0 (3)[x3]浮=1,0011;0.111 011 000 0 (1)[x4]浮=0,0111;1.101 011 010 0 (2)[x4]浮=0,0111;1.010 100 110 0 (3)[x4]浮=1,0111;1.010 100 110 0 注:以上浮点数也可采用如下格式:
1 1 数符 阶符 4 阶码 10 尾数

此时只要将上述答案中的数符位移 到最前面即可。

13. 浮点数格式同上题,当阶码 基值分别取2和16时, (1)说明2和16在浮点数中如何 表示。 (2)基值不同对浮点数什么有 影响? (3)当阶码和尾数均用补码表 示,且尾数采用规格化形式,给出两 种情况下所能表示的最大正数和非零 最小正数真值。 解:(1)阶码基值不论取何值, 在浮点数中均为隐含表示,即:2和 16不出现在浮点格式中,仅为人为的 约定。

(2)当基值不同时,对数的表示范围和精度 都有影响。即:在浮点格式不变的情况下,基越 大,可表示的浮点数范围越大,但精度越下降。 (3)r=2时,最大正数的浮点格式为: 0,1111;0.111 111 111 1 其真值为:N+max=215×(1-2-10) 非零最小规格化正数浮点格式为: 1,0000;0.100 000 000 0 其真值为:N+min=2-16×2-1=2-17 r=16时,最大正数的浮点格式为: 0,1111;0.1111 1111 11 其真值为:N+max=1615×(1-2-10) 非零最小规格化正数浮点格式为: 1,0000;0.0001 0000 00 其真值为:N+min=16-16×16-1=16-17

14. 设浮点数字长为32位,欲表示±6万间的十 进制数,在保证数的最大精度条件下,除阶符、数 符各取一位外,阶码和尾数各取几位?按这样分配, 该浮点数溢出的条件是什么? 解:若要保证数的最大精度,应取阶的基=2。 若要表示±6万间的十进制数,由于32768(215) < 6万 <65536(216),则:阶码除阶符外还应取5位 (向上取2的幂)。 故:尾数位数=32-1-1-5=25位 按此格式,该浮点数上溢的条件为:阶码?? 32 该浮点数格式如下: 1 5 1 25 阶符 阶 值 数符 尾 数

15. 什么是机器零?若要求全0表 示机器零,浮点数的阶码和尾数应采 取什么机器数形式? 解:机器零指机器数所表示的零 的形式,它与真值零的区别是:机器 零在数轴上表示为“0”点及其附近的 一段区域,即在计算机中小到机器数 的精度达不到的数均视为“机器零”, 而真零对应数轴上的一点(0点)。若 要求用“全0”表示浮点机器零,则浮 点数的阶码应用移码、尾数用补码表 示(此时阶码为最小阶、尾数为零, 而移码的最小码值正好为“0”,补码 的零的形式也为“0”,拼起来正好为 一串0的形式)。

16. 设机器数字长为16位,写出下列各 种情况下它能表示的数的范围。设机器数 采用一位符号位,答案均用十进制表示。 (1)无符号数; (2)原码表示的定点小数; (3)补码表示的定点小数; (4)补码表示的定点整数; (5)原码表示的定点整数; (6)浮点数的格式为:阶码6位(含1 位阶符),尾数10位(含1位数符)。分别 写出正数和负数的表示范围; (注:加条件:阶原尾原非规格化数。) (7)浮点数格式同(6),机器数采 用补码规格化形式,分别写出其对应的正 数和负数的真值范围。

解:各种表示方法数据范围如下: (1)无符号整数:0 ~ 216 - 1, 即:0 ~ 65535; (2)原码定点小数: 1 - 2-15 ~ -(1 - 2-15) (3)补码定点小数: 1 - 2-15 ~ - 1 (4)补码定点整数:215 - 1 ~ -215, 即:32767 ~ -32768; (5)原码定点整数: 215 - 1 ~ -(215 - 1), 即:32767 ~ -32767;

(6)据题意画出该浮点数格式:
1 5 1 9

阶符

阶码

数符

尾数

由于题意中未指定该浮点数所采用 的码制,则不同的假设前提会导致不同 的答案,示意如下: 1)当采用阶原尾原非规格化数时, 最大正数=0,11 111;0.111 111 111 最小正数=1,11 111;0.000 000 001 则正数表示范围为: 231?(1-2-9)~2-31 ?2-9

最大负数=1,11 111;1.000 000 001 最小负数=0,11 111;1.111 111 111 则负数表示范围为: 2-31 ?(-2-9)~ -231 ?(1-2-9) 2)当采用阶移尾原非规格化数时, 正数表示范围为: 231 ?(1-2-9)~ 2-32 ? 2-9 负数表示范围为: 2-32 ?(-2-9)~ -231?(1-2-9) 注:零视为中性数,不在此范围内。

(7)当机器数采用补码规格化 形式时,若不考虑隐藏位,则 最大正数=0,11 111;0.111 111 111 最小正数=1,00 000;0.100 000 000 其对应的正数真值范围为: 231?(1-2-9)~2-32 ?2-1 最大负数=1,00 000;1.011 111 111 最小负数=0,11 111;1.000 000 000 其对应的负数真值范围为: -2-32 ?(2-1+2-9)~ 231 ?(-1)

注意: 1)应写出可表示范围的上、下限 精确值(用≥或≤,不要用>或<)。 2)应用十进制2的幂形式分阶、 尾两部分表示,这样可反映出浮点数 的格式特点。括号不要乘开,不要用 十进制小数表示,不直观、不精确且 无意义。 3)原码正、负域对称,补码正、 负域不对称,浮点数阶、尾也如此。 特别要注意浮点负数补码规格化范围。 (满足条件:数符?MSB位=1)

17. 设机器数字长为8位(含1位符 号位),对下列各机器数进行算术左 移一位、两位,算术右移一位、两位, 讨论结果是否正确。 [x1]原=0.001 1010; [x2]原=1.110 1000; [x3]原=1.001 1001; [y1]补=0.101 0100; [y2]补=1.110 1000; [y3]补=1.001 1001; [z1]反=1.010 1111; [z2]反=1.110 1000; [z3]反=1.001 1001。

解:算术左移一位: [x1]原=0.011 0100;正确 [x2]原=1.101 0000;溢出(丢1)出错 [x3]原=1. 011 0010;正确 [y1]补=0. 010 1000;溢出(丢1)出错 [y2]补=1.101 0000;正确 [y3]补=1.011 0010;溢出(丢0)出错 [z1]反=1. 101 1111;溢出(丢0)出错 [z2]反=1. 101 0001;正确 [z3]反=1.011 0011;溢出(丢0)出错 算术左移两位: [x1]原=0.110 1000;正确 [x2]原=1.010 0000;溢出(丢11)出错 [x3]原=1. 110 0100;正确

算术左移两位: [y1]补=0. 101 0000;溢出(丢10)出错 [y2]补=1.010 0000;正确 [y3]补=1.110 0100;溢出(丢00)出错 [z1]反=1. 011 1111;溢出(丢01)出错 [z2]反=1. 010 0011;正确 [z3]反=1.110 0111;溢出(丢00)出错 算术右移一位: [x1]原=0.000 1101;正确 [x2]原=1.011 0100;正确 [x3]原=1.000 1100(1);丢1,产生误差 [y1]补=0.010 1010;正确 [y2]补=1.111 0100;正确 [y3]补=1.100 1100(1);丢1,产生误差

算术右移一位: [z1]反=1.101 0111;正确 [z2]反=1.111 0100(0);丢0,产生误差 [z3]反=1.100 1100;正确 算术右移两位: [x1]原=0.000 0110(10);产生误差 [x2]原=1.001 1010;正确 [x3]原=1.000 0110(01);产生误差 [y1]补=0.001 0101;正确 [y2]补=1.111 1010;正确 [y3]补=1.110 0110(01);产生误差 [z1]反=1.110 1011;正确 [z2]反=1.111 1010(00);产生误差 [z3]反=1.110 0110(01);产生误差

18. 试比较逻辑移位和算术移位。 解:逻辑移位和算术移位的区别: 逻辑移位是对逻辑数或无符号数 进行的移位,其特点是不论左移还是 右移,空出位均补0,移位时不考虑符 号位。 算术移位是对带符号数进行的移 位操作,其关键规则是移位时符号位 保持不变,空出位的补入值与数的正 负、移位方向、采用的码制等有关。 补码或反码右移时具有符号延伸特性。 左移时可能产生溢出错误,右移时可 能丢失精度。

19. 设机器数字长为8位(含1位符号 位),用补码运算规则计算下列各题。 (1)A=9/64, B=-13/32, 求A+B; (2)A=19/32,B=-17/128,求A-B; (3)A=-3/16,B=9/32, 求A+B; (4)A=-87, B=53, 求A-B; (5)A=115, B=-24, 求A+B。 解: (1)A=9/64=(0.001 0010)2 B= -13/32=(-0.011 0100)2 [A]补=0.001 0010 [B]补=1.100 1100

[A+B]补= 0. 0 0 1 0 0 1 0 + 1. 1 0 0 1 1 0 0 1. 1 0 1 1 1 1 0 ——无溢出 A+B=( -0.010 0010)2 = -17/64
(2)A=19/32=(0.100 1100)2 B= -17/128=(-0.001 0001)2 [A]补=0.100 1100 [B]补=1.110 1111 [-B]补=0.001 0001 [A-B]补= 0. 1 0 0 1 1 0 0 + 0. 0 0 1 0 0 0 1 0. 1 0 1 1 1 0 1 ——无溢出 A-B=(0.101 1101)2 = 93/128

(3)A= -3/16=(-0.001 1000)2 B=9/32=(0.010 0100)2 [A]补=1.110 1000 [B]补= 0.010 0100 [A+B]补= 1. 1 1 0 1 0 0 0 + 0. 0 1 0 0 1 0 0 0. 0 0 0 1 1 0 0 —— 无溢出 A+B=(0.000 1100)2 = 3/32
(4)A= -87=(-101 0111)2 B=53=(110 101)2 [A]补=1,010 1001 [B]补=0,011 0101 [-B]补=1,100 1011

[A-B]补= 1,0 1 0 1 0 0 1 + 1,1 0 0 1 0 1 1 0,1 1 1 0 1 0 0 —— 溢出 A-B=(-1,000 1100)2 = -140 (5)A=115=(111 0011)2 B= -24=(-11 000)2 [A]补=0,111 0011 [B]补=1,110 1000 [A+B]补= 0,1 1 1 0 0 1 1 + 1,1 1 0 1 0 0 0 0,1 0 1 1 0 1 1——无溢出 A+B=(101 1011)2 = 91 注意:1、单符号位运算要用单符号位的判 断方法判溢出; 2、结果的真值形式上要和原始数据一致。

20. 用原码一位乘、两位乘和补码一 位乘(Booth算法)、两位乘计算x· y。 (1)x= 0.110 111,y= -0.101 110; (2)x= -0.010 111,y= -0.010 101; (3)x= 19, y= 35; (4)x= 0.110 11, y= -0.111 01。 解:先将数据转换成所需的机器数, 然后计算,最后结果转换成真值。 (1)[x]原=x=0.110111,[y]原=1.101110 x*=0.110111, y*=0.101110 x0=0,y0=1,z0=x0 ? y0=0 ? 1=1 x*×y*=0.100 111 100 010 [x×y]原=1.100 111 100 010 x· -0. 100 111 100 010 y=

原码一位乘:
?1 + ?1 + ?1 + ?1 ?1 + ?1 部分积 0.000 000 0.000 000 0.110 111 0.110 111 0.011 011 0.110 111 1.010 010 0.101 001 0.110 111 1.100 000 0.110 000 0.011 000 0.110 111 1.001 111 0.100 111 乘数y* .1 0 1 1 1 0 —— +0 0.1 0 1 1 1 —— +x* 0 1 1 —— +x* . 1 0 1 —— +x* 0 . 1 0 —— +0 1 0 . 1 —— x*

1 0.1

0 1 0

0 0 1 0 0 0

1 0 0

0 1 0

2x*=01.101110,[-x*]补=[-x]补=1.001001 原码两位乘:
+ ?2 + ?2 + ?2 + 部分积 000.000 000 001.101 110 001.101 110 000.011 011 111.001 001 111.100 100 111.111 001 111.001 001 111.000 010 111.110 000 000.110 111 000.100 111 乘数 00.1 0 1 1 1 0 +2x* 1 0 0 0 .1 0 1 1 +[-x*]补 1 0 0 1 0 0 0 .1 0 +[-x*]补 Cj 0 0

1
10 0 0 1 0 0 0. +x* 10 0 0 1 0

0

结果同一位乘,x· -0. 100 111 100 010 y=

[x]补=x=0.110111 [y]补=1.010010 [-x]补=1.001001 [2x]补=01.101110 [-2x]补=10.010010 [x×y]补=1.011 000 011 110 0 x· -0.100 111 100 010 0 y= 补码一位乘、两位乘运算过程如下:

补码一位乘:部分积 00.000 000 ?1 0 0 . 0 0 0 0 0 0 + 11.001 001 11.001 001 ?1 1 1 . 1 0 0 1 0 0 + 00.110 111 00.011 011 ?1 0 0 . 0 0 1 1 0 1 ?1 0 0 . 0 0 0 1 1 0 + 11.001 001 11.001 111 ?1 1 1 . 1 0 0 1 1 1 + 00.110 111 00.011 110 ?1 0 0 . 0 0 1 1 1 1 + 11.001 001 11.011 000

乘数[y]补 yn+1 1.0 1 0 0 1 0 0 —— +0 0 1.0 1 0 0 1 0 +[-x]补 1 0 1.0 1 0 0 1 +[x]补

1 1 0 1 .0 1 0 0 —— +0 1 1 1 0 1.0 1 0 +[-x]补 1 1 1 1 0 1.0 1 +[x]补
1 0 1 .0 +[-x]补 1 0 0 —— 清0

0 1 1 1 0 1 1 1

补码两位乘: 部分积 乘数 yn+1 000.000 000 11.0 1 0 0 1 0 0 + 110.010 010 +[-2x]补 110.010 010 ?2 1 1 1 . 1 0 0 1 0 0 1 0 1 1 .0 1 0 0 1 + 000.110 111 +[x]补 000.011 011 ?2 0 0 0 . 0 0 0 1 1 0 1 1 1 0 1 1 .0 1 0 + 000.110 111 +[x]补 000.111 101 ?2 0 0 0 . 0 0 1 1 1 1 01 1 1 1 0 1 1 .0 + 111.001 001 +[-x]补 111.011 000 0 1 1 1 1 0 0 0 .清0 结果同补码一位乘, x· -0. 100 111 100 010 00 y=

(2) x= -0.010111, y= -0.010101 [x]原=1.010111, [y]原=1.010101 x*=0. 010111 , y*=0. 010101 [-x*]补=1.101001,2x*=0.101110 [-2x*]补=1.010010 x0=1,y0=1,z0=x0 ? y0=1 ? 1=0 [x]补=1.101001, [y]补=1.101011 [-x]补=0.010111,[2x]补=1.010010 [-2x]补=0.101110 x*×y*=0.000 111 100 011 [x×y]原=0.000 111 100 011 [x×y]补=0.000 111 100 011 0 x· 0. 000 111 100 011 y= 运算过程如下:

原码一位乘: 部分积 0.000 000 + 0.010 111 0.010 111 ?1 0 . 0 0 1 0 1 1 ?1 0 . 0 0 0 1 0 1 + 0.010 111 0.011 100 ?1 0 . 0 0 1 1 1 0 ?1 0 . 0 0 0 1 1 1 + 0.010 111 0.011 110 ?1 0 . 0 0 1 1 1 1 ?1 0 . 0 0 0 1 1 1

乘数y* .0 1 0 1 0 1 —— +x*

1.0 1 1 1.0

0 1 0 —— +0 1 0 1 —— +x*

0 1 1 . 0 1 0 —— +0 0 0 1 1 . 0 1 —— +x*

0 0 0 1 0 0

1 1 . 0 —— +0 0 1 1

原码两位乘: 部分积 000.000 + 000.010 000.010 ?2 0 0 0 . 0 0 0 + 000.010 000.011 ?2 0 0 0 . 0 0 0 + 000.010 000.011 ?2 0 0 0 . 0 0 0

1 0 0. +0 结果同一位乘, x· 0. 000 111 100 011 y=

000 111 111 101 111 100 111 111 110 111

乘数y* 00.0 1 0 1 0 1 +x* 1 1 0 0 .0 1 0 1 +x*

Cj 0 0

0 00 1 1 0 0 .0 1 +x* 0 10 0 0 1

补码一位乘:部分积 00.000 000 + 00.010 111 00.010 111 ?1 0 0 . 0 0 1 0 1 1 ?1 0 0 . 0 0 0 1 0 1 + 11.101 001 11.101 110 ?1 1 1 . 1 1 0 1 1 1 + 00.010 111 00.001 110 ?1 0 0 . 0 0 0 1 1 1 + 11.101 001 11.110 000 ?1 1 1 . 1 1 1 0 0 0 + 00.010 111 00.001 111 ?1 0 0 . 0 0 0 1 1 1

乘数[y]补 yn+1 1.1 0 1 0 1 1 0 +[-x]补 1 1.1 0 1 1 1.1 1 0 1 1 —— +0 0 1 0 1 +[x]补

0 1 1 1 .1 0 1 0 +[-x]补
0 0 1 1 1.1 0 1 +[x]补 1 1.1 0 +[-x]补 1 1 1 . 1 —— +0

0 0 0 1

1 0 0 0

补码两位乘: 部分积 000.000 + 000.010 000.010 ?2 0 0 0 . 0 0 0 + 000.010 000.011 ?2 0 0 0 . 0 0 0 + 000.010 000.011 ?2 0 0 0 . 0 0 0

1 1 1 .1 清0 +0 结果同补码一位乘, x· 0. 000 111 100 011 00 y=

000 111 111 101 111 100 111 111 110 111

乘数 11.1 0 1

yn+1 0 1 1 0 +[-x]补 0 1 0 1 +[-x]补 1.1 0 1 +[-x]补

1 1 1 1 .1

00 1 1 1

10 0 0 1

(3) x= 19, y= 35 x=(10 011)2,y=(100 011)2 x*= [x]原= [x]补= 0,010 011 y*= [y]原= [y]补= 0,100 011 [-x*]补= [-x]补= 1,101 101 2x*= [2x]补= 0,100 110 [-2x*]补= [-2x]补= 1,011 010 x0=0,y0=0,z0=x0 ? y0=0 ? 0=0 x· x*×y*= [x×y]原= [x×y]补 y= = 0,001 010 011 001 = (665)10 运算过程如下:

原码一位乘: 部分积 0,0 0 0 0 0 0 + 0,0 1 0 0 1 1 0,0 1 0 0 1 1 ?1 0,0 0 1 0 0 1 + 0,0 1 0 0 1 1 0,0 1 1 1 0 0 ?1 0,0 0 1 1 1 0 ?1 0,0 0 0 1 1 1 ?1 0,0 0 0 0 1 1 ?1 0,0 0 0 0 0 1 + 0,0 1 0 0 1 1 0,0 1 0 1 0 0 ?1 0,0 0 1 0 1 0

乘数y* 1 0 0 0 1 1 —— +x* 0 0 1 —— +x* 0 —— +0 0 —— +0 0 —— +0 1 —— +x*

1 1 0

0 0 1 1

1 0 0 1

1 1 0 0

0 1 1 0

0 0 1 1

0 1 1

0 0 1

原码两位乘: 部分积 0 0 0,0 0 0 + 1 1 1,1 0 1 1 1 1,1 0 1 ?2 1 1 1,1 1 1 + 0 0 0,0 1 0 0 0 0,0 0 1 ?2 0 0 0,0 0 0 + 0 0 0,1 0 0 0 0 0,1 0 1 ?2 0 0 0,0 0 1

Cj 000 1 1 0 101 +[-x*]补 101 1 011 0 1 0 0,1 0 0 0 011 +x* 110 0 011 1 0 0 1 0 0,1 0 110 +2x* 001 0 010 0 1 1 0 0 1 0 0, +0 结果同一位乘, x· 0,001 010 011 001 y=

乘数y* 0 0,1 0 0 0

补码一位乘:部分积 0 0,0 0 0 0 0 0 + 1 1,1 0 1 1 0 1 1 1,1 0 1 1 0 1 ?1 1 1,1 1 0 1 1 0 ?1 1 1,1 1 1 0 1 1 + 0 0,0 1 0 0 1 1 0 0,0 0 1 1 1 0 ?1 0 0,0 0 0 1 1 1 ?1 0 0,0 0 0 0 1 1 ?1 0 0,0 0 0 0 0 1 + 1 1,1 0 1 1 0 1 1 1,1 0 1 1 1 0 ?1 1 1,1 1 0 1 1 1 + 0 0,0 1 0 0 1 1 0 0,0 0 1 0 1 0

乘数[y]补 0,1 0 0 0 1

yn+1 1 0 +[-x]补 1 1 —— +0 0 1 +[x]补

1 0,1 0 0 1 0,1

0 0 0 0

0 1 1

0 1 0, 1 0 0 0 —— +0 0 0 1 0,1 0 0 —— +0 1 0 0 1 0,1 0 +[-x]补 1 1 1 1 0 0, 1 +[x]补 0 0 1 0 注:整数乘此位要省。 0 1

0 0

补码两位乘: 部分积 乘数 0 0 0,0 0 0 0 0 0 0 0,1 0 0 + 1 1 1,1 0 1 1 0 1 1 1 1,1 0 1 1 0 1 ?2 1 1 1,1 1 1 0 1 1 0 1 0 0,1 + 0 0 0,0 1 0 0 1 1 0 0 0,0 0 1 1 1 0 ?2 0 0 0,0 0 0 0 1 1 10 0 1 0 + 1 1 1,0 1 1 0 1 0 1 1 1,0 1 1 1 0 1 ?2 1 1 1,1 1 0 1 1 1 01 1 0 0 + 0 0 0,0 1 0 0 1 1 0 0 0,0 0 1 0 1 0 01 1 0 0 结果同补码一位乘, x· 0, 001 010 y=

0

yn+1 1 1 0 +[-x]补 0 0 1 +[x]补

0

0,1 0 0 +[-2x]补 0 0,1 +0 1 0 0 —省 011 001 1

(4) x= 0. 110 11, y= -0.111 01 x*= [x]原= [x]补= 0. 110 11 [y]原=1.111 01,y*=0. 111 01 [y]补=1.000 11 [-x*]补= [-x]补= 1.001 01 2x*= [2x]补= 01.101 10 [-2x*]补= [-2x]补= 10.010 10 x0=0,y0=1,z0=x0 ? y0=0 ? 1=1 x*×y*=0.110 000 111 1 [x×y]原=1.110 000 111 1 [x×y]补=1.001 111 000 10 x· -0. 110 000 111 1 y= 运算过程如下:

原码一位乘:部分积

乘数y*

+ ?1 ?1 + ?1 + ?1 + ?1

0.000 0.110 0.110 0.011 0.001 0.110 1.000 0.100 0.110 1.010 0.101 0.110 1.100 0.110

00 11 11 01 10 11 01 00 11 11 01 11 00 00

.1 1 1

0 1 —— +x*

1.1 1 1 1.1

1 0 —— +0 1 1 —— +x* . 1 1 —— +x* 1 . 1 —— +x*

1 1 1

1 1 1

0 1 1

1 1

原码两位乘: 部分积 000.000 + 000.110 000.110 ?2 0 0 0 . 0 0 1 + 111.001 111.010 ?2 1 1 1 . 1 1 0 + 001.101 001.100 ?1 0 0 0 . 1 1 0

1 0. +0 结果同一位乘, x· -0. 110 000 111 1 y=

00 11 11 10 01 11 10 10 00 00

乘数y* 0.1 1 1 0 1 +x* 1 1 0.1 1 1 +[-x*]补

Cj 0 0

1 1 1 1 1 .0 1 +2x* 0 0 1 1 1

补码一位乘: 部分积 00.000 + 11.001 11.001 ?1 1 1 . 1 0 0 ?1 1 1 . 1 1 0 + 00.110 00.101 ?1 0 0 . 0 1 0 ?1 0 0 . 0 0 1 ?1 0 0 . 0 0 0 + 11.001 11.001

00 01 01 10 01 11 00 10 01 10 01 11

乘数[y]补 yn+1 1.0 0 0 1 1 0 +[-x]补 1 1.0 0 0 1 1.0 0 1 1 —— +0 0 0 1 +[x]补

0 0 1 1 .0 0 0 —— +0 0 0 0 1 1.0 0 —— +0 1 0 0 0 1 1. 0 +[-x]补 1 0 0 0 1 0 —— 清0

补码两位乘: 部分积 乘数 yn+1 000.000 00 1.0 0 0 1 1 0 + 111.001 01 +[-x]补 111.001 01 ?2 1 1 1 . 1 1 0 0 1 0 1 1.0 0 0 1 + 000.110 11 +[x]补 000.101 00 ?2 0 0 0 . 0 0 1 0 1 0 0 0 1 1.0 0 + 110.010 10 +[-2x]补 110.011 11 ?1 1 1 1 . 0 0 1 1 1 1 0 0 0 1 0 . —— 清0 结果同补码一位乘, x· -0. 110 000 111 10 y=

21. 用原码加减交替法和补码加减交 替法计算x÷y。 (1)x=0.100111,y=0.101011; (2)x=-0.10101, y=0.11011; (3)x=0.10100, y= -0.10001; (4)x=13/32, y= -27/32。 解: (1)x*=[x]原=[x]补=x= 0.100 111 y*=[y]原=[y]补=y= 0.101 011 [-y*]补=[-y]补=1.010 101 q0=x0?y0=0 ?0=0 x?y=x*?y*=[x?y]原=0.111 010 r*=0.000 010×2-6=0.000 000 000 010 计算过程如下:

原码加减交替除法:
+
1? + 1? + 1? + 被除数(余数) 0.100 111 1.010 101 1.111 100 1.111 000 0.101 011 0.100 011 1.000 110 1.010 101 0.011 011 0.110 110 1.010 101 0.001 011 商 0.000 000 试减,+[-y*]补 0. r<0,+y* 0.1 r>0, +[-y*]补 0.1 1 r>0, +[-y*]补

续: 1? + 1? + 1? + + 被除数(余数) 商 0.010 110 0.111 1.010 101 r>0, +[-y*]补 1.101 011 1.010 110 0.1 1 1 0 0.101 011 r<0,+y* 0.000 001 0.000 010 0.1 1 1 0 1 1.010 101 r>0, +[-y*]补 1 . 0 1 0 1 1 1 1? 0.1 1 1 0 1 0 0.101 011 r<0,+y*(恢复余数) 0.000 010

补码加减交替除法:
+
1? + 1? + 1? + 被除数(余数) 00.100 111 11.010 101 11.111 100 11.111 000 00.101 011 00.100 011 01.000 110 11.010 101 00.011 011 00.110 110 11.010 101 00.001 011 商 0.000 000 试减,x、y同号,+[-y]补 0. r、y异号,+[y]补 0.1 r、y同号, +[-y]补 0.1 1 r、y同号, +[-y]补

续: 被除数(余数) 商 1? 0 0 . 0 1 0 1 1 0 0.111 + 11.010 101 r、y同号, +[-y]补 11.101 011 1? 1 1 . 0 1 0 1 1 0 0.1 1 1 0 + 00.101 011 r、y异号,+[y]补 00.000 001 1? 0 0 . 0 0 0 0 1 0 0.1 1 1 0 1 + 11.010 101 r、y同号, +[-y]补 1 1 . 0 1 0 1 1 1 1? 0.1 1 1 0 1 1 —— 恒置1 + 00.101 011 r、x异号,(恢复余数) 00.000 010 且r、y异号, +[y]补 注:恒置1引入误差。 x?y=[x?y]补= 0.111 011 [r]补=0.000 010,r=r*=0.000 000 000 010

(2)x= -0.101 01,y=0.110 11 [x]原=1.101 01 x*= 0.101 01 y* = [y]原 = [y]补= y = 0.110 11 [-y*]补= [-y]补= 1.001 01 [x]补= 1.010 11 q0 = x0 ? y0 = 1 ? 0 = 1 x*?y*= 0.110 00 [x?y]原=1.110 00 x?y = -0.110 00 r*=0.110 00×2-5 =0.000 001 100 0 计算过程如下:

原码加减交替除法:
+
1? + 1? + 1? + 被除数(余数) 商 0.101 01 0.000 00 1.001 01 试减,+[-y*]补 1.110 10 1.101 00 0. 0.110 11 r<0,+y* 0.011 11 0.111 10 0.1 1.001 01 r>0, +[-y*]补 0.000 11 0.001 10 0.1 1 1.001 01 r>0, +[-y*]补 1.010 11

续:

1? + 1? + +

被除数(余数) 商 0.101 10 0.110 0.110 11 r<0, +y* 1.100 01 1.000 10 0.1 1 0 0 0.110 11 r<0,+y* 1.111 01 1? 0.1 1 0 0 0 0.110 11 r<0, +y*(恢复余数) 0.110 00

补码加减交替除法:
+
1? + 1? + 1? + 被除数(余数) 11.010 11 00.110 11 00.001 10 00.011 00 11.001 01 11.100 01 11.000 10 00.110 11 11.111 01 11.110 10 00.110 11 00.101 01 商 0.000 00 试减,x、y异号,+[y]补 1. r、y同号,+[-y]补 1.0 r、y异号, +[y]补 1.0 0 r、y异号, +[y]补

续: 被除数(余数) 商 1? 0 1 . 0 1 0 1 0 1.001 + 11.001 01 r、y同号, +[-y]补 00.011 11 1? 0 0 . 1 1 1 1 0 1.0 0 1 1 + 11.001 01 r、y同号,+[-y]补 00.000 11 1? 1.0 0 1 1 1 —— 恒置1 + 11.001 01 r、x异号,(恢复余数) 11.010 00 且r、y同号,+[-y]补 注:恒置1引入误差。 [r]补=1.010 00, r= -0.000 001 100 0 [x?y]补=1.001 11,x?y= -0.110 01

(3)x= 0.101 00,y= -0.100 01 x*= [x]原= [x]补= x=0.101 00 [y]原 = 1.100 01 y* = 0.100 01 [-y*]补=1.011 11 [y]补= 1.011 11 [-y]补= 0.100 01 q0 = x 0 ? y0 = 0 ? 1 = 1 x*?y*= 1.001 01 —— 溢出 [x?y]原:无定义 x?y = -1.001 01 r*=0.010 11×2-5 =0.000 000 101 1 计算过程如下:

原码加减交替除法:
+
1? + 1? + 1? + 被除数(余数) 商 0.101 00 0.000 00 1.011 11 试减,+[-y*]补 0.000 11 注:溢出, 可停止运算, 0.001 10 1. 1.011 11 r>0, +[-y*]补 转溢出处理。 1.101 01 1.010 10 1.0 0.100 01 r<0, +y* 1.110 11 1.101 10 1.0 0 0.100 01 r<0, +y* 0.001 11

续: 被除数(余数) 商 1? 0 . 0 1 1 1 0 1.001 + 1.011 11 r>0, +[-y*]补 1.111 01 1? 1 . 1 1 0 1 0 1.0 0 1 0 + 0.100 01 r<0,+y* 0.010 11 1? 1.0 0 1 0 1 r>0, 结束 注:当x*>y*时产生溢出,这种情况在第一步运 算后判断r的正负时就可发现。此时数值位占领小数 点左边的1位,原码无定义,但算法本身仍可正常运 行。

补码加减交替除法:
+
1? + 1? + 1? + 被除数(余数) 00.101 00 11.011 11 00.000 11 00.001 10 11.011 11 11.101 01 11.010 10 00.100 01 11.110 11 11.101 10 00.100 01 00.001 11 商 0.000 00 试减,x、y异号,+[y]补 0. r、y异号,+[y]补 0.1 r、y同号, +[-y]补 0.1 1 r、y同号, +[-y]补

续: 被除数(余数) 商 1? 0 0 . 0 1 1 1 0 0.110 + 11.011 11 r、y异号, +[y]补 11.111 01 1? 1 1 . 1 1 0 1 0 0.1 1 0 1 + 00.100 01 r、y同号,+[-y]补 00.010 11 1? 0.1 1 0 1 1 —— 恒置1 r、x同号,结束 [r]补=0.010 11,r=r*=0.000 000 101 1 真符位的产生:qf = x0 ? y0 = 0 ? 1 = 1 [x?y]补=10.110 11,x?y= -1.001 01 判溢出:qf ? q0 = 1 ? 0 = 1,溢出

注:由于本题中x*>y*,有溢出。 除法运算时一般在运算前判断是否x* >y*,如果该条件成立则停止运算, 转溢出处理。但此算法本身在溢出情 况下仍可正常运行,此时数值位占领 小数点左边的1位,商需设双符号位 (变形补码),以判溢出。采用这种 方法时运算前可不判溢出,直接进行 运算,运算完后再判溢出。

(4)x=13/32=(0.011 01)2 y= -27/32=(-0.110 11)2 x*= [x]原= [x]补= x=0. 011 01 [y]原 = 1.110 11 y* = 0.110 11 [-y*]补=1.001 01 [y]补= 1.001 01 [-y]补= 0.110 11 q0 = x0 ? y0 = 0 ? 1 = 1 x*?y*= 0.011 11 [x?y]原=1.011 11 x?y =(-0.011 11)2 = -15/32 r*=0.010 11×2-5 =0.000 000 101 1

原码加减交替除法:
+
1? + 1? + 1? + 被除数(余数) 商 0.011 01 0.000 00 1.001 01 试减,+[-y*]补 1.100 10 1.001 00 0. 0.110 11 r<0, +y* 1.111 11 1.111 10 0.0 0.110 11 r<0, +y* 0.110 01 1.100 10 0.0 1 1.001 01 r>0, +[-y*]补 0.101 11

续: 1? + 被除数(余数) 商 1.011 10 0.011 1.001 01 r>0, +[-y*]补 0.100 11 1.001 10 0.0 1 1 1 1.001 01 r>0, +[-y*]补 0.010 11 1? 0.0 1 1 1 1 r>0, 结束

1? +

补码加减交替除法:
+
1? + 1? + 1? + 被除数(余数) 00.011 01 11.001 01 11.100 10 11.001 00 00.110 11 11.111 11 11.111 10 00.110 11 00.110 01 01.100 10 11.001 01 00.101 11 商 0.000 00 试减,x、y异号,+[y]补 1. r、y同号,+[-y]补 1.1 r、y同号,+[-y]补 1.1 0 r、y异号, +[y]补

续: 被除数(余数) 商 1? 0 1 . 0 1 1 1 0 1.100 + 11.001 01 r、y异号, +[y]补 00.100 11 1? 0 1 . 0 0 1 1 0 1.1 0 0 0 + 11.001 01 r、y异号,+[y]补 00.010 11 1? 1.1 0 0 0 1 —— 恒置1 r、x同号,结束 [r]补=0.010 11,r=r*=0.000 000 101 1 [x?y]补=1.100 01,x?y=(-0.011 11)2 = -15/32

22. 设机器字长为16位(含1位符号 位),若一次移位需1? s,一次加法需1 ? s,试问原码一位乘、补码一位乘、原 码加减交替除和补码加减交替除法最 多各需多少时间? 解:原码一位乘最多需时= =1? s×15(加)+ 1? s×15(移位) =30? s 补码一位乘最多需时= =1? s×16+1? s×15=31? s 原码加减交替除最多需时= =1? s×(16+1)+1? s×15=32? s 补码加减交替除最多需时= =1? s×(16+1)+1? s×15=32? s

25. 对于尾数为40位的浮点数(不 包括符号位在内),若采用不同的机 器数表示,试问当尾数左规或右规时, 最多移位次数各为多少? 解:对于尾数为40位的浮点数, 若采用原码表示,当尾数左规时,最 多移位39次;反码表示时情况同原码; 若采用补码表示,当尾数左规时,正 数最多移位39次,同原码;负数最多 移位40次。当尾数右规时,不论采用 何种码制,均只需右移1次。

26. 按机器补码浮点运算步骤计算 [x±y]补 (1)x=2-011× 0.101 100, y=2-010×(-0.011 100); (2)x=2-011×(-0.100 010), y=2-010×(-0.011 111); (3)x=2101×(-0.100 101), y=2100×(-0.001 111)。 解:先将x、y转换成机器数形式: (1)[x]补=1,101;0.101 100 [y]补=1,110;1.100 100 注:为简单起见,源操作数可直 接写成浮点格式,不必规格化。

1)对阶: [?E]补=[Ex]补+[-Ey]补 =11,101+00,010=11,111 [?E]补<0,应Ex向Ey对齐,则: [Ex]补+1=11,101+00,001 =11,110 [?E]补+1=11,111+00,001 =00,000=0 至此, Ex=Ey,对毕。 [x]补=1,110;0.010 110 2)尾数运算: [Mx]补+[My]补= 0 0 . 0 1 0 1 1 0 + 11.100 100 11.111 010

[Mx]补+[-My]补= 0 0 . 0 1 0 1 1 0 + 00.011 100 00.110 010 3)结果规格化: [x+y]补=11,110;11.111 010 =11,011;11.010 000 (左规3次,阶码减3,尾数左移3位) [x-y]补=11,110;00.110 010 已是规格化数。 4)舍入:无 5)溢出:无 则:x+y=2-101×(-0.110 000) x-y =2-010×0.110 010

(2)x=2-011×(-0.100010) y=2-010×(-0.011111) [x]补=1,101;1.011 110 [y]补=1,110;1.100 001 1)对阶: 过程同1),则 [x]补=1,110;1.101 111 2)尾数运算: [Mx]补+[My]补= 1 1 . 1 0 1 + 11.100 11.010 [Mx]补+[-My]补= 1 1 . 1 0 1 + 00.011 00.001

111 001 000 111 111 110

3)结果规格化: [x+y]补=11,110;11.010 000 已是规格化数。 [x-y]补=11,110;00.001 110 =11,100;00.111 000 (左规2次,阶码减2,尾数左移2位) 4)舍入:无 5)溢出:无 则:x+y=2-010×(-0.110 000) x-y =2-100× 0.111 000

(3)x=2101×(-0.100 101) y=2100×(-0.001 111) [x]补=0,101;1.011 011 [y]补=0,100;1.110 001 1)对阶: [?E]补=[Ex]补+[-Ey]补 =00,101+11,100=00,001 [?E]补>0,应Ey向Ex对齐,则: [Ey]补+1=00,100+00,001 =00,101 [?E]补+[-1]补=00,001+11,111 =00,000=0 至此, Ey=Ex,对毕。 [y]补=0,101;1.111 000(1)

2)尾数运算: [Mx]补+[My]补= 1 1 . 0 1 1 0 1 1 + 1 1 . 1 1 1 0 0 0(1) 1 1 . 0 1 0 0 1 1(1) [Mx]补+[-My]补= 1 1 . 0 1 1 0 1 1 + 0 0 . 0 0 0 1 1 1(1) 1 1 . 1 0 0 0 1 0(1) 3)结果规格化: [x+y]补=00,101;11.010 011(1) 已是规格化数。 [x-y]补=00,101;11.100 010(1) =00,100;11.000 101 (左规1次,阶码减1,尾数左移1位)

4)舍入: [x+y]补=00,101;11.010 011(舍) [x-y]补不变。 [x-y]补=00,100;11.000 101 5)溢出:无 则:x+y=2101×(-0.101 101) x-y =2100×(-0.111 011)

27、假设阶码取3位,尾数取6位 (均不包括符号位),计算下列各题。 (1)[25×(11/16)]+[24×(-9/16)] (2)[2-3×(13/16)]-[2-4×(-5/8)] (3)[23×(13/16)]×[24×(-9/16)] (4)[26×(-11/16)]÷[23×(-15/16)] (5)[23×(-1)] ×[2-2×57/64] (6)[2-6×(-1)]÷[27×(-1/2)] (7)3.3125+6.125 (8)14.75-2.4375 解:设机器数采用阶补尾补形式: (1)x= 25×(11/16)= 2101×0.101100 y= 24×(-9/16)=2100×(-0.100100)则: [x]阶补尾补=00,101;00.101100 [y]阶补尾补=00,100;11.011100

1)对阶: [?E]补=[Ex]补+[-Ey]补 =00,101+11,100=00,001 [?E]补>0,应Ey向Ex对齐,则: [Ey]补+1=00,100+00,001=00,101 [?E]补+[-1]补=00,001+11,111=0 至此, Ey=Ex,对毕。 [y]补=00,101;11.101110 2)尾数运算: [Mx]补+[My]补= 0 0 . 1 0 1 1 0 0 + 11.101110 00.011010 3)结果规格化:左规1位 [x+y]补=00,101;00.011 010 =00,100;00.110 100

4)舍入:不需舍入。 5)溢出:无 则:x+y=2100×(0.110 100) =24×(13/16) (2)[2-3×(13/16)]-[2-4×(-5/8)] x= 2-3×(13/16)= 2-011×0.110 100 y= 2-4×(-5/8)=2-100×(-0.101000) [x]阶补尾补=11,101;00.110100 [y]阶补尾补=11,100;11.011000 1)对阶: [?E]补=[Ex]补+[-Ey]补 =11,101+00,100=00,001 [?E]补>0,应Ey向Ex对齐,则:

[Ey]补+1=11,100+00,001=11,101 [?E]补+[-1]补=00,001+11,111=0 至此, Ey=Ex,对毕。 [y]补=11,101;11.101100 2)尾数运算: [Mx]补+[-My]补= 0 0 . 1 1 0 1 0 0 + 00.010100 01.001000 3)结果规格化:右规 [x-y]补=11,101;01.001 000 =11,110;00.100 100 4)舍入:不需舍入。 5)溢出:无 则:x-y=2-010×(0.100 100) =2-2×(9/16)

(3)[23×(13/16)]×[24×(-9/16)] x= 23×(13/16)=2011×(0.110 100) y= 24×(-9/16)=2100×(-0.100 100) [x]阶补尾补=00,011;0.110 100 [y]阶补尾补=00,100;1.011 100 1)阶码相加: [Ex]补+[Ey]补=00,011+ 00,100 =00,111(无溢出) 2)尾数相乘: 补码两位乘比较法,见下页。 [Mx × My]补=11.100 010(110 000 00) 3)结果规格化:左规1位。 [x×y]补=0,111;1.100 010(110 000 00) =0,110;1.000 101(100 000 0)

2)尾数相乘: (补码两位乘比较法) 部分积 乘数 000.000 000 11.0 1 1 + 000.000 000 000.000 000 ?2 0 0 0 . 0 0 0 0 0 0 0 0 1 1 .0 + 111.001 100 111.001 100 ?2 1 1 1 . 1 1 0 0 1 1 00 0 0 1 + 001.101 000 001.011 011 ?2 0 0 0 . 0 1 0 1 1 0 11 0 0 0 + 111.001 100 111.100 010 11 0 0 0

yn+1 1 0 0 0 +[-0]补 1 1 1 0 +[-x]补 1.0 1 1 +[2x]补 0 1 1 .0 +[-x]补 0 0 0(清0)

4)舍入:设采用0舍1入法,应舍: [x×y]阶补尾补=0,110;1.000 101 5)溢出:无 x×y=2110×(-0.111 011) = 26×(-59/64) (4) [26×(-11/16)]÷[23×(-15/16)] x= 26×(-11/16)=2110×(-0.101 100) y= 23×(-15/16)=2011×(-0.111 100) [x]阶补尾补=00,110;1.010 100 [y]阶补尾补=00,011;1.000 100 1)阶码相减: [Ex]补+[-Ey]补=00,110+ 11,101 =00,011(无溢出)

2)尾数相除: (补码加减交替除法) 被除数(余数) 商 11.010 100 0.000 000 试减, + 00.111 100 Mx、My同号,+[-My]补 00.010 000 1? 0 0 . 1 0 0 0 0 0 0. + 11.000 100 r、My异号,+[My]补 11.100 100 1? 1 1 . 0 0 1 0 0 0 0.1 + 00.111 100 r、My同号, +[-My]补 00.000 100 1? 0 0 . 0 0 1 0 0 0 0.1 0 + 11.000 100 r、My异号, +[My]补 11.001 100

续: 被除数(余数) 商 1? 1 0 . 0 1 1 0 0 0 0.101 + 00.111 100 r、My同号, +[-My]补 11.010 100 1? 1 0 . 1 0 1 0 0 0 0.1 0 1 1 + 00.111 100 r、My同号,+[-My]补 11.100 100 1? 1 1 . 0 0 1 0 0 0 0.1 0 1 1 1 + 00.111 100 r、My异号, +[-My]补 0 0 . 0 0 0 1 0 0 1? 0.1 0 1 1 1 1 —— 恒置1 + 11.000 100 r、Mx异号,(恢复余数) 11.001 000 且r、My异号, +[My]补 [Mx?My]补= 0.101 111, [r]补=1.001 000 r= -0 .111 000 ? 2-6 =-0.000 000 111 000

29. 设浮点数阶码取3位,尾数取6位 (均不包括符号位),要求阶码用移码 运算,尾数用补码运算,计算x· y,且结 果保留1倍字长。 (1)x=2-100× 0.101101, y=2-011×(-0.110101); (2)x=2-011×(-0.100111), y=2101×(-0.101011)。 解:先将x、y转换成机器数形式: (1)[x]阶移尾补=0,100;0.101 101 [y]阶移尾补=0,101;1.001 011 1)阶码相加: [Ex]移+[Ey]补=00,100+11,101 =00,001(无溢出)

2)尾数相乘: (算法一:补码两位乘比较法) 部分积 乘数 yn+1 000.000 000 11.0 0 1 0 1 1 0 + 111.010 011 +[-x]补 111.010 011 ?2 1 1 1 . 1 1 0 1 0 0 1 1 1 1 .0 0 1 0 1 + 111.010 011 +[-x]补 111.000 111 ?2 1 1 1 . 1 1 0 0 0 1 11 1 1 1 1.0 0 1 + 000.101 101 +[x]补 000.011 110 ?2 0 0 0 . 0 0 0 1 1 1 10 1 1 1 1 1 1 .0 + 111.010 011 +[-x]补 111.011 010 10 1 1 1 1 0 0(清0)

2)尾数相乘: (算法二:补码一位乘比较法) 部分积 00.000 000 11.010 011 11.010 011 11.101 001 11.110 100 00.101 101 00.100 001 00.010 000 11.010 011 11.100 011 11.110 001 00.101 101 00.011 110 00.001 111 00.000 111 11.010 011 11.011 010 乘数 1.0 0 1 0 1 1 yn+1 0 +[-x]补 1 — +0 1 +[x]补 0 +[-x]补

+
?1 ?1 + ?1 +

1 1 .0 0 1 1 1 .0

1 0 1 0 1 0

1 1 1 1. 0 0 1

?1 +
?1 ?1 +

1 1 1 1

1.0 0

1 +[x]补

0 1 1 1 1 0 1 1 1 0 1 1

1 1. 0 0 — +0 1 1 1. 0 +[-x]补 1 1 0. — (清0)

[Mx × My]补=1.011 010(101 111 00) 3)结果规格化:已是规格化数。 4)舍入:设采用0舍1入法,应入: [x×y]阶移尾补=0,001;1.011 011 5)溢出:无 x×y=2-111×(-0.100 101) (2)x=2-011×(-0.100 111) y=2101×(-0.101 011) [x]阶移尾补=0,101;1.011 001 [y]阶移尾补=1,101;1.010 101 1)阶码相加: [Ex]移+[Ey]补=00,101+00,101 =01,010(无溢出)

2)尾数相乘: (算法一:补码两位乘比较法) 部分积 乘数 yn+1 000.000 000 11.0 1 0 1 0 1 0 + 111.011 001 +[x]补 111.011 001 ?2 1 1 1 . 1 1 0 1 1 0 0 1 1 1 .0 1 0 1 0 + 111.011 001 +[x]补 111.001 111 ?2 1 1 1 . 1 1 0 0 1 1 11 0 1 1 1.0 1 0 + 111.011 001 +[x]补 111.001 100 ?2 1 1 1 . 1 1 0 0 1 1 00 1 1 0 1 1 1 .0 + 000.100 111 +[-x]补 000.011 010 0 0 1 1 0 1 0 0(清0) [Mx × My]补=0.011 010(001 101 00)

2)尾数相乘: (算法二:补码一位乘比较法) 部分积 乘数 yn+1 00.000 000 1.0 1 0 1 0 1 0 + 00.100 111 +[-x]补 00.100 111 ?1 0 0 . 0 1 0 0 1 1 1 1 .0 1 0 1 0 1 + 11.011 001 +[x] 补 11.101 100 ?1 1 1 . 1 1 0 1 1 0 0 1 1.0 1 0 1 0 + 00.100 111 +[-x]补 00.011 101 ?1 0 0 . 0 0 1 1 1 0 1 0 1 1. 0 1 0 1 + 11.011 001 +[x]补 11.100 111 ?1 1 1 . 1 1 0 0 1 1 1 1 0 1 1.0 1 0 + 00.100 111 +[-x]补 00.011 010 ?1 0 0 . 0 0 1 1 0 1 0 1 1 0 1 1.0 1 + 11.011 001 +[x]补 11.100 110 ?1 1 1 . 1 1 0 0 1 1 0 0 1 1 0 1 1. 0 + 00.100 111 +[-x]补 00.011 010 0 0 1 1 0 1 0. — (清0) [Mx × My]补=0.011 010(001 101 0)

3)结果规格化: [x×y]阶移尾补= = 1,010;0.011 010(001 101 00) = 1,001;0.110 100(011 010 0) (左规1次,阶码减1,尾数左移1位) 4)舍入:设采用0舍1入法,应舍: [x×y]阶移尾补=1,001;0. 110 100 5)溢出:无 x×y=2001×0.110 100 注意:采用阶移尾补格式是指:参 加运算的数是阶移尾补格式,用阶移尾 补算法计算,运算结果是阶移尾补格式。

30. 机器数格式同上题,要求阶码 用移码运算,尾数用补码运算,计算 x÷y。(注:改用阶移尾原格式作。) (1)x=2101× 0.100111, y=2011×(-0.101011); (2)x=2110×(-0.101101), y=2011×(-0.111100)。 解:先将x、y转换成机器数形式: (1)[x]阶移尾原=1,101;0.100 111 [y]阶移尾原=1,011;1.101 011 1)阶码相减: [Ex]移+[-Ey]补=01,101+11,101 =01,010(无溢出)

2)尾数相除: (原码加减交替除法) 被除数(余数) 商 00.100 111 0.000 000 试减, + 11.010 101 +[-My*]补 11.111 100 r<0,商0 1? 1 1 . 1 1 1 0 0 0 0. + 00.101 011 +My* 00.100 011 r>0,商1 1? 0 1 . 0 0 0 1 1 0 0.1 + 11.010 101 +[-My*]补 00.011 011 r>0,商1 1? 0 0 . 1 1 0 1 1 0 0.1 1 + 11.010 101 +[-My*]补 00.001 011 r>0,商1

续: 被除数(余数) 商 1? 0 0 . 0 1 0 1 1 0 0.111 + 11.010 101 +[-My*]补 11.101 011 r<0,商0 1? 1 1 . 0 1 0 1 1 0 0.1 1 1 0 + 00.101 011 +My* 00.000 001 r>0,商1 1? 0 0 . 0 0 0 0 1 0 0.1 1 1 0 1 + 11.010 101 +[-My*]补 1 1 . 0 1 0 1 1 1 1? 0.1 1 1 0 1 0,r<0,商0 + 00.101 011 (恢复余数) 00.000 010 且r、My同号, +[-My]补 Mx*?My*= 0.111 010,[Mx?My]原= 1.111 010 r*= 0 .000 010 ? 2-6 =0.000 000 000 010

3)结果规格化:已是规格化数。 4)舍入:已截断法舍入。 5)溢出:无 [x?y]阶移尾原=1,010;1.111 010 x ? y=2010×(-0.111 010) (2)x=2110×(-0.101 101) y=2011×(-0.111 100) [x]阶移尾原=1,110;1.101 101 [y]阶移尾原=1,011;1.111 100 1)阶码相减: [Ex]移+[-Ey]补=01,110+11,101 =01,011(无溢出)

2)尾数相除: (原码加减交替除法) 被除数(余数) 商 00.101 101 0.000 000 试减, + 11.000 100 +[-My*]补 11.110 001 r<0,商0 1? 1 1 . 1 0 0 0 1 0 0. + 00.111 100 +My* 00.011 110 r>0,商1 1? 0 0 . 1 1 1 1 0 0 0.1 + 11.000 100 +[-My*]补 00.000 000 r>0,商1 1? 0 0 . 0 0 0 0 0 0 0.1 1 + 11.000 100 +[-My*]补 11.000 100 r<0,商0

续: 被除数(余数) 商 1? 1 0 . 0 0 1 0 0 0 0.110 + 00.111 100 +My* 11.000 100 r<0,商0 1? 1 0 . 0 0 1 0 0 0 0.1 1 0 0 + 00.111 100 +My* 11.000 100 r<0,商0 1? 1 0 . 0 0 1 0 0 0 0.1 1 0 0 0 + 00.111 100 +My* 1 1 . 0 0 0 1 0 0 1? 0.1 1 0 0 0 0,r<0,商0 + 00.111 100 恢复余数,+My* 00.000 000 Mx*?My*= [Mx?My]原= 0.110 000 r*= -0.000 000?2-6 = -0.000 000 000 000

注:由于加减交替除法算法中缺 少对部分余数判“0”的步骤,因此算 法运行中的某一步已除尽时,算法不 会自动停止,而是继续按既定步数运 行完。
3)结果规格化:已是规格化数。 4)舍入:已截断法舍入。 5)溢出:无 [x?y]阶移尾原=1,011;0.110 000 x ? y=2011× 0.110 000

31. 设机器字长为32位,用与非门 和与或非门设计一个并行加法器(假 设与非门的延迟时间为30ns,与或非 门的延迟时间为45ns),要求完成32 位加法时间不得超过0.6? s。画出进位 链及加法器逻辑框图。 解:首先根据题意要求选择进位方案: 1)若采用串行进位链(行波进 位),则在di、ti函数的基础上,实现 32位进位需要的时间为: T=2ty?32=64ty=64?30=1920ns 不满足0.6? s的加法时间限制,不 能用。(设1ty=30ns)

2)若采用单重分组跳跃进位(级 连方式),则在di、ti的基础上,4位一 组分组,32位进位需: T=2.5ty?8组=20ty=20?30=600ns 刚好满足0.6 ? s加法时间的限制。 考虑到一次加法除进位时间外, 还需di、ti函数的产生时间、和的产生 时间(最高位和)等因素,故此进位 方案仍不适用。 结论:若采用单重分组跳跃进位,小 组规模需在6位以上较为合适。即: T=2.5ty?6组=15ty=15?30=450ns 除进位外还有150ns(约5ty)左右 的时间供加法开销,较充裕。

3)若采用双重分组跳跃进位(二级 先行—级联进位),4位一小组,4小组 为一大组分组,则32位进位需: T=2.5ty?4级=10ty=10?30=300ns 完全满足0.6?s的加法时间限制,可 以使用。

双重分组跳跃进位
(两级先行进位) 32位双重分组跳跃进位的进位链框图见教材286页 图6.23。
C31 C27 C23 C19 C15 C11 C7 C3

第 D1 T1 C30~28 1

一 D2 T2 C26~24 2

大 D3 T3

组 D4 T4 C18~16 4


D5 T5 C14~12 5


D6 T6 C10~8 6


D7 T7


D8 T8 C2~0 8

C22~20
3

C6~4 7


di

… ti
di

… ti
di

… ti
di ti di

… ti
di

… ti
di

… ti
di


ti C-1

6位一组单重分组跳跃进位的进位链框图如下:
C30 C28~24 C22~18 C16~12 C10~6 C4~0
C5 6位

C31 2位 C29 6位 C23 6位 C17 6位 C11 6位 (6) (5) (4) (3) (2) d31~30

C-1

(1)

d29~24 d23~18 d17~12 d11~6 d5~0 t31~30 t29~24 t23~18 t17~12 t11~6 t5~0

注:一个完整的加法器还应考虑di、ti产生电路、 求和电路等。

加法器逻辑框图如下。图中,进位链电路可选 上述两种方案之一。
F31~0

求 和 电 路

C31~ -1

进 位 链 d31~0

C-1 t31~0

进位函数产生电路

A31~0

B31~0

32. 设机器字长为16位,分别按4、 4、4、4和5、5、3、3分组后 (1)画出两种分组方案的单重分 组并行进位链框图,并比较哪种方案 运算速度快。 (2)画出两种分组方案的双重分 组并行进位链框图,并对这两种方案 进行比较。 (3)用74181和74182画出单重和 双重分组的并行进位链框图。 解: (1)4—4—4—4分组的16位单重 分组并行进位链框图见教材286页图 6.22。

单重分组跳跃进位
(一级先行进位)

16位并行加法器进位链框图(6.22)
C15 C14 C13 C12
第1组 第15-12位并行

C11 C10 C9 C8
第2组 第11-8位并行

C7 C6 C5 C4 第3组

C3 C2 C1 C0 第4组 第3-0位并行 d3 d2 d1 t3 t2 t1 d0 t0

C1

第7-4位并行
d7 d6 d5 t7 t6 t5 d4 t4

t15 t14 t13 t12 t11 t10 t9 t8 d15 d14 d13 d12 d11 d10 d9 d8

注意:16位一级先行进位加法器最长进位延迟时
间为10ty。

5—5—3—3分组的16位单重分组并行进位链框 图如下:
C14~11 C15 C10 C9~6 C5 C4 C3 C2 C1 C0 C-1

5位

5位

3位

3位

d15~11 t15~11

d10~6 t10~6

d5~3

t5~3

d2~0 t2~0

4—4—4—4分组的进位时间=2.5ty?4=10ty; 5—5—3—3分组的进位时间=2.5ty?4=10ty; 两种分组方案最长加法时间相同。 结论:单重分组并行进位的最长进位时间只与 组数有关,与组内位数无关。

(2)4—4—4—4分组的16位双重分组并行 进位链框图见教材288页图6.26。
C15 C11 C7 C3









D5

T5

D6

T6 C10~8

D7

T7 C6~4

D8

T8
C2~0

C14~12

5 … di

6 …

7 …

8 …

ti

di

ti

di

ti

di

ti

C-1

5—5—3—3分组的16位双重分组并行进位链框 图如下:
C15 C10 C5 C2

第 二 重 进 位 链
D4 T4 C14~11 D3 T3 C9~6 D2 T2 C4~3 D1 T1 C1~0

小组进位链 5位

小组进位链 5位

小组进位链 3位

小组进位链 3位

C-1

d15~11 t15~11

d10~6 t10~6

d5~3

t5~3

d2~0 t2~0

4—4—4—4分组的进位时间 =2.5ty?3=7.5ty; 5—5—3—3分组的进位时间 =2.5ty?3=7.5ty; 两种分组方案最长加法时间相同。 结论:双重分组并行进位的最长 进位时间只与组数和级数有关,与组 内位数无关。

(3)单重分组16位并行加法器逻辑图如下(正 逻辑):
C16
74181 4位ALU

C12

74181

C8

74181

C4

74181

C0

双重分组16位并行加法器逻辑图如下(正逻辑):
Cn+z P3 G3 P2

74182
G2

Cn+y 4位BCLA Cn+x P1 G1 P0

Cn G0

C16

74181 4位ALU

C12

74181

C8

74181

C4

74181

C0

图中,设与进位无关的引脚省略不画,不用的 引脚也省略不画。

注意: 1)181芯片正、负逻辑的引脚表示方法; 2)为强调可比性,5-5-3-3分组时不考虑扇入影响; 3)181芯片只有最高、最低两个进位输入/输出端, 组内进位无引脚; 4)181为4位片,无法5-5-3-3分组,只能4-4-4-4分组; 5)单重分组跳跃进位只用到181,使用182的一般是 双重以上分组跳跃进位; 6)单重分组跳跃进位是并行进位和串行进位技术的 结合;双重分组跳跃进位是二级并行进位技术;特别 注意在位数较少时,双重分组跳跃进位可以采用全先 行进位技术实现;位数较多时,可采用双重分组跳跃 进位和串行进位技术结合实现。


相关文章:
计算机组成原理(薛胜军)课后习题答案第二版(1)
计算机组成原理(薛胜军)课后习题答案第二版(1)_计算机硬件及网络_IT/计算机_专业资料。1. 1 计算机是一种能自动地、高速地对各种数字化信息进行运算处理的电子...
计算机组成原理课后答案(2)
计算机组成原理课后答案(2)_教育学_高等教育_教育专区。第一章 计算机系统概论 ...存储字:一个存储单元所存二进制代码的逻辑单位。 存储字长:一个存储单元所存二...
计算机组成原理课后作业答案(包健第二版)完整
计算机组成原理课后作业答案(包健第二版)完整_理学_高等教育_教育专区。P156 4.1 X=0.1101 [X]补=0.1101000 [-X]补=1.0011000 [2X]补=溢出 [-2X]补...
计算机组成原理课后习题1-10章答案(唐朔飞)(第二版)
计算机组成原理课后习题1-10章答案(唐朔飞)(第二版) 计算机组成原理课后习题答案答案计算机组成原理课后习题答案答案隐藏>> 第一章 计算机系统概论 1. 什么是计算机...
计算机组成原理课后习题答案(一到九章)
计算机组成原理课后习题答案(一到九章)_理学_高等教育_教育专区。重点大学计算机...计算机组成原理第二版课... 32页 免费 计算机组成原理第四版课... 40页 免费...
计算机组成原理课后习题答案(常国锋 武汉大学出版社)
计算机组成原理课后习题答案(常国锋 武汉大学出版社)_工学_高等教育_教育专区。第 1 章 习题参考答案1.电子数字计算机和电子模拟计算机的区别在哪里? 解:电子数字...
计算机组成原理课后答案唐朔飞第二版
计算机组成原理课后答案唐朔飞第二版_理学_高等教育_教育专区。《计算机组成原理》(第二版)唐朔飞 编著第 一章 1. 什么是计算机系统、计算机硬件和计算机软件?硬件...
计算机组成原理课后答案
计算机组成原理课后题答... 10页 4下载券喜欢此文档的还喜欢 计算机组成原理习题课后... 48页 1下载券 计算机组成原理第二版课... 32页 免费 计算机组成原理...
计算机组成原理-第二版-唐朔飞著-课后习题答案完整
计算机组成原理-第二版-唐朔飞著-课后习题答案完整_电脑基础知识_IT/计算机_专业资料。第 1 章 计算机系统概论 1. 什么是计算机系统、计算机硬件和计算机软件?硬件...
计算机组成原理-第二版-唐朔飞著-课后习题详解
计算机组成原理-第二版-唐朔飞著-课后习题详解_理学_高等教育_教育专区。第 1 章 计算机系统概论 2. 如何理解计算机的层次结构? 答:计算机硬件、系统软件和应用...
更多相关标签: