求助:浮点数相减的问题
题目:已知设有两个十进进数,X=-0.875*(2的1次方),Y=0.625*(2的2次方)
问题1:将X,Y的尾数转换成2进制补码形式
问题1中书上的解答过程如下:(我已经明白了,"有疑问的"的是“问题2中”的“步骤3和步骤4”)
书中问题1的解答过程如下:
设S1为X的尾数,S2为Y的尾数字,则
S1=-0.875(此为10进制)=-0.111(此为2进制),
“S1的补码”=1.001
S2=0.625(此为10进制)=+0.101(此为2进制),
“S1的补码”=0.101
——————————————————————————————————————————————————
问题2:
设阶码2位,阶符1位,尾数为3位。
通过补码运算规则求Z=X-Y的2进制浮点规格化的结果。
书上的解答过程是:("有疑问的"的是“问题2中”的“步骤4”)
步骤1:
设X的阶码为MX,Y的阶码为MY,
MX=(+01)(此为2进制),MY=(+10)(此为2进制)
MX-MY=(+01)-(+10)=(-01)(此为2进制)
小阶的尾数S1右移一位得S1=(-0.0111)(此为2进制),MX的阶码加1,则MX=(+10)=MY(此为2进制表示),S1经过舍入处理后,S1=(-0.100)(此为2进制表示),对阶完毕。
步骤2:
所以,X的补码浮点格式:010,1100(其中,“010中”,0是阶符,10是阶码,“1100”中1是数符,代表为负,100代表是尾数)
Y的补码浮点格式:010,0101(其中,“010中”,0是阶符,10是阶码,“0101”中0是数符,代表为正,101代表是尾数)
步骤3:
尾数相减
[S1]的补码=11.100(其中“11”为数符,“100”为尾数)
[-S2]的补码=11.011(其中“11”为数符,“011”为尾数)
然后,
[S1]的补码 =11.100
+ [-S2]的补码=11.011
_________________________________
[S1-S2]的补码=10.111
步骤4:
观察,上式尾数求和绝对值“大于”1,那么尾数右移一位,最低有效位舍掉,阶码加1(右规),
则“[S1-S2]的补码=11.011”(规格化数)
步骤5:
MX=MY=11
结论:结论规格化结果:011,1011
————————————————————————————————————————————
我的问题有两点:
1) “步骤3”中,
“[S1-S2]的补码=10.111”其中,“10”是数符,它既不是11(代表为负),也不是00(代表为正),那么“10”代表的是什么含义啊。
2) “步骤4”中:
“[S1-S2]的补码=10.111”是如何尾数右移一位,最低有效位舍掉,阶码加1(右规),
变化为“[S1-S2]的补码=11.011”(规格化数)的啊,实在不会了
恳请会此算法的好心人帮忙。