.
0 0 . 0 1 0 1 1 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 原码加减交替除法:
被除数(余数) 商 0 . 0 1 1 0 1 0 . 0 0 0 0 0 + 1 . 0 0 1 0 1 试减,+[-y*]补
1 . 1 0 0 1 0 1? 1 . 0 0 1 0 0 0 . + 0 . 1 1 0 1 1 r<0, +y*
1 . 1 1 1 1 1 1? 1 . 1 1 1 1 0 0.0 + 0 . 1 1 0 1 1 r<0, +y* 0 . 1 1 0 0 1
1? 1 . 1 0 0 1 0 0.0 1 + 1 . 0 0 1 0 1 r>0, +[-y*]补 0 . 1 0 1 1 1
被除数(余数) 商
1? 1 . 0 1 1 1 0 0 . 0 1 1 + 1 . 0 0 1 0 1 r>0, +[-y*]补 0 . 1 0 0 1 1
1? 1 . 0 0 1 1 0 0.0 1 1 1 + 1 . 0 0 1 0 1 r>0, +[-y*]补
可编辑范本
.
0 . 0 1 0 1 1 1? 0.0 1 1 1 1
r>0, 结束 补码加减交替除法:
被除数(余数) 商 0 0 . 0 1 1 0 1 0 . 0 0 0 0 0
+ 1 1 . 0 0 1 0 1 试减,x、y异号,+[y]补 1 1 . 1 0 0 1 0
1? 1 1 . 0 0 1 0 0 1 . + 0 0 . 1 1 0 1 1 r、y同号,+[-y]补 1 1 . 1 1 1 1 1
1? 1 1 . 1 1 1 1 0 1.1
+ 0 0 . 1 1 0 1 1 r、y同号,+[-y]补 0 0 . 1 1 0 0 1
1? 0 1 . 1 0 0 1 0 1.1 0
+ 1 1 . 0 0 1 0 1 r、y异号, +[y]补 0 0 . 1 0 1 1 1
被除数(余数) 商 1? 0 1 . 0 1 1 1 0 1 . 1 0 0
+ 1 1 . 0 0 1 0 1 r、y异号, +[y]补 0 0 . 1 0 0 1 1
1? 0 1 . 0 0 1 1 0 1.1 0 0 0 + 1 1 . 0 0 1 0 1 r、y异号,+[y]补 0 0 . 0 1 0 1 1 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 (或33μs) 补码加减交替除最多需时 1μs×(16+1) +1μs×15=32μs (或33μ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=2-011× 0.101 100,y=2-010×(-0.011 100)
[x]补=1,101;0.101 100, [y]补=1,110;1.100 100
[Ex]补=1,101, [y]补=1,110, [Mx]补=0.101 100, [My]补=1.100 100 1)对阶:
[
E]补=[Ex]补+[-Ey]补 = 11,101+ 00,010=11,111 < 0,
应Ex向Ey对齐,则:[Ex]补+1=11,101+00,001=11,110 = [Ey]补 [x]补=1,110;0.010 110 2)尾数运算:
[Mx]补+[My]补= 0.010 110 + 11.100 100=11.111010
[Mx]补+[-My]补=0.010 110 + 00.011100= 00.110 010 3)结果规格化:
[x+y]补=11,110;11.111 010 = 11,011;11.010 000 (尾数左规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)的1),则 [x]补=1,110;1.101 111 2)尾数运算:
[Mx]补+[My]补= 11.101111 + 11. 100001 = 11.010000 [Mx]补+[-My]补= 11.101111 + 00.011111 = 00.001110
3)结果规格化:
[x+y]补=11,110;11.010 000,已是规格化数
[x-y]补=11,110;00.001 110 =11,100;00.111000 (尾数左规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]补=00,101+11,100=00,001 >0,应Ey向Ex对齐,则: [Ey]补+1=00,100+00,001=00,101=[Ex]补 [y]补=0,101;1.111 000(1) 2)尾数运算:
[Mx]补+[My]补= 11.011011+ 11.111000(1)= 11.010011(1) [Mx]补+[-My]补= 11.011011+ 00.000111(1)= 11.100010(1)
可编辑范本
.
2) 结果规格化:
[x+y]补=00,101;11.010 011(1),已是规格化数
[x-y]补=00,101;11.100 010(1)=00,100;11.000 101 (尾数左规1次,阶码减1) 4)舍入:
[x+y]补=00,101;11.010 011(舍) [x-y]补 不变 5)溢出:无
则:x+y=2101×(-0.101 101)
x-y =2100×(-0.111 011)
6.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)对阶:
[DE]补=[Ex]补+[-Ey]补 =00,101+11,100=00,001
[DE]补>0,应Ey向Ex对齐,则: [Ey]补+1=00,100+00,001=00,101 [DE]补+[-1]补=00,001+11,111=0 至此, Ey=Ex,对毕。 [y]补=00,101;11.101110 2)尾数运算:
[Mx]补+[My]补= 0 0 . 1 0 1 1 0 0
+ 1 1 . 1 0 1 1 1 0 0 0 . 0 1 1 0 1 0 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)对阶:
[DE]补=[Ex]补+[-Ey]补 =11,101+00,100=00,001
[DE]补>0,应Ey向Ex对齐,则:
[Ey]补+1=11,100+00,001=11,101 [DE]补+[-1]补=00,001+11,111=0 至此, Ey=Ex,对毕。 [y]补=11,101;11.101100 2)尾数运算:
[Mx]补+[-My]补= 0 0 . 1 1 0 1 0 0
+ 0 0 . 0 1 0 1 0 0 0 1 . 0 0 1 0 0 0 3)结果规格化:右规
[x-y]补=11,101;01.001 000 =11,110;00.100 100 4)舍入:不需舍入。 (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)尾数相乘: (补码两位乘比较法)
部分积 乘数 0 0 0 . 0 0 0 0 0 0 1 1 . 0 1 1 1 0 0 0 + 0 0 0 . 0 0 0 0 0 0 +[-0]补 0 0 0 . 0 0 0 0 0 0
?2 0 0 0 . 0 0 0 0 0 0 0 0 1 1 .0 1 1 1 0 + 1 1 1 . 0 0 1 1 0 0 +[-x]补 1 1 1 . 0 0 1 1 0 0 ?2 1 1 1 . 1 1 0 0 1 1 0 0 0 0 1 1 . 0 1 1 + 0 0 1 . 1 0 1 0 0 0 +[2x]补 0 0 1 . 0 1 1 0 1 1 可编辑范本
yn+1