(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*= 1.001 01 —— 溢出 ? 1 = 1 x*? y0 = 0 ? [-y]补= 0.100 01 q0 = x0 y = -1.001 01 r*=0.010 11×2-5 =0.000?y]原:无定义 x? [x 000 101 1 计算过程如下:
原码加减交替除法: 被除数(余数) 商 0 . 1 0 1 0 0 0 . 0 0 0 0 0 + 1 . 0 1 1 1 1 试减,+[-y*]补 0 . 0 0 0 . 0 0 1 1 0 1?0 1 1 1 . + 1 . 0 1 1 1 1 r>0, +[-y*]补 1 . 1 0 1 0 1 1 . 0 1 0 1 0 1.0 + 0 . 1 0? 1 0 0 1 r< 1 . 1 0 1 1 0 ?0, +y* 1 . 1 1 0 1 1 1 1.0 0 + 0 . 1 0 0 0 1 r<0, +y* 0 . 0 0 1 1 1 0 . 0 1 1 1 0 1 . 0 0 1 ?续: 被除数(余数) 商 1 + 1 . 0 1 1 1 1 r> 1 . 1 1?0, +[-y*]补 1 . 1 1 1 0 1 1 0 1 0 1.0 0 1 0 + 0 . 1 0 0 0 1 r<0,+y* 1.0 0 1 0 1 r?0 . 0 1 0 1 1 1>0, 结束 注:当x*>y*时产生溢出,这种情况在第一步运算后判断r的正负时就可发现。此时数值位占领小数点左边的1位,原码无定义,但算法本身仍可正常运行。
补码加减交替除法: 被除数(余数) 商 0 0 . 1 0 1 0
0 0 . 0 0 0 0 0 + 1 0 0 . 0 0 1 ?1 . 0 1 1 1 1 试减,x、y异号,+[y]补 0 0 . 0 0 0 1 1 1 1 0 0 . + 1 1 . 0 1 1 1 1 r、y异号,+[y]补 1 1 . 0 1 0 1 0 0.1 + 0 0 .? 1 1 . 1 0 1 0 1 1 1 1 . 1 0 1?1 0 0 0 1 r、y同号, +[-y]补 1 1 . 1 1 0 1 1 1 1 0 0.1 1 + 0 0 . 1 0 0 0 1 r、y同号, +[-y]补 0 0 . 0 0 1 1 1
0 0 . 0 1 1 1 0 ?续: 被除数(余数) 商 1 0 . 1 1 0 + 1 1 . 0 1 1 1 1 r、y异号, +[y]补 1 1 . 1 1 . 1 1 0 1 0 0.1 1 0 1 + 0 0 . 1 0 0 0?1 1 1 0 1 1 0.1 1 0 1 1 —— 恒置1 ?1 r、y同号,+[-y]补 0 0 . 0 1 0 1 1 1 r、x同号,结束 [r5]补=0.010 11,r=r*=0.000 000 101 1 ?y= -1.001 01 判溢出:qf ?y]补=10.110 11,x? 1 = 1 [x? y0 = 0 ?真符位的产生:qf = x0 0 = 1,溢出?q0 = 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.011 11 ? 1 = 1 x*? y0 = 0 ?[-y]补= 0.110 11 q0 = x0 y =(-0.011 11)2 =
-15/32 r*=0.010 11×2-5 ?y]原=1.011 11 x?[x =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 0 1 0 0 0 .? 1 0 1 + 0 . 1 1 0 1 1 r<0, +y* 1 . 1 1 1 1 1 1 . 1 1 1 1 0 0.0 + 0 . 1 1 0 1? 1 1 r< 1 . 1 0 0 1 0 ?0, +y* 0 . 1 1 0 0 1 1 0.0 1 + 1 . 0 0 1 0 1 r>0, +[-y*]补 0 . 1 0 1 1 1 1 . 0 1 1 1 0 0 . 0 1 1 ?续: 被除数(余数) 商 1 + 1 . 0 0 1 0 1 r> 1 . 0 0?0, +[-y*]补 0 . 1 0 0 1 1 1 1 1 0 0.0 1 1 1 + 1 . 0 0 1 0 1
r>0,
+[-y*]补
0.0
1
1
1
1 r? 0 . 0 1 0 1 1 1>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 1 1 . 1 1 1 1 0 ? r、y同号,+[-y]补 1 1 . 1 1 1 1 1 1 1.1 + 0 0 . 1 1 0 1 1 r、y同号,+[-y]补 0 0 . 1 1 0 0 1 0 1 . 1 0 0 1 0 1.1 0 + 1 1 . 0 0 1 0 1 ?1 r、y异号, +[y]补 0 0 . 1 0
1 1 1
0 1?续: 被除数(余数) 商 1 . 0 1 1 1 0 1 . 1 0 0 + 1 1 . 0 0 1 0 1 r、y异号, 0 1 . 0 0 1 1 0 1.1 0 0 0 +?+[y]补 0 0 . 1 0 0 1 1 1 1.1 0? 1 1 . 0 0 1 0 1 r、y异号,+[y]补 0 0 . 0 1 0 1 1 1 0 0 1 —— 恒置1 r、x同号,结束 [r]补=0.010 y=(-0.011 11)2 = -15/32?y]补=1.100 01,x?11,r=r*=0.000 000 101 1 [x
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)尾数运算: