求助:浮点数相减的问题

xinfeiyang300 2009-09-15 08:33:30
题目:已知设有两个十进进数,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”(规格化数)的啊,实在不会了

恳请会此算法的好心人帮忙。
...全文
371 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinfeiyang300 2009-10-11
  • 打赏
  • 举报
回复
对的,呵呵
xinfeiyang300 2009-09-21
  • 打赏
  • 举报
回复
不是的,应该考虑数符。
xinfeiyang300 2009-09-18
  • 打赏
  • 举报
回复
好的,我再拿回去查查相关的参考书,
hyram 2009-09-16
  • 打赏
  • 举报
回复
相加的时候应该是不考虑数符的,怀疑是步骤3中吧数符搞错了,应该一直是11

33,024

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧