首页 > 编程知识 正文

浮点数的阶码为什么用移码表示 解析,阶码用什么表示

时间:2023-05-04 06:50:39 阅读:264768 作者:1798

这个问题的基础是了解浮点数的存储方式, 昨天我写了一篇博客介绍,

https://blog.csdn.net/q5706503/article/details/82859504

引出了今天的问题:

浮点数的阶码为什么用移码表示 ? (总结在最后)

百度百科给出的答案是这样的:

移码(又叫增码)是符号位取反的补码,一般用指数的移码减去1来做浮点数的阶码,引入的目的是为了保证浮点数的机器零为全0。

下边是解释:

用补码表示阶码的时候,当阶码无限小,产生了下溢的时候,阶码变成了0,那么这个浮点数的值变为了1。

而实际上这个数是无限接近于零的。那么我们就需要取出其中的 "-0“ 值作为机器零。

 

我觉得保证浮点数的机器零全为0是原因之一, 我们再接着探索一下:

 

移码是对于某一个系列或集合的数使它们都映射到正数轴上去,即在数轴上把数都统一往右移动n位,使得所有的数都不为负数。加上偏移量的所有值都大于等于0。这里的话,由于都不为负数,所以我们直接可以由移码的表示形式看出对应数值的大小,

阶码经常做的操作是比较大小和加减,补码是要变换成原码再比较的,所以对于表示阶码,移码是完美的选择(这里是把移码当做无符号数来比较大小的,而不必考虑符号,方便比较!)我认为这是最主要的原因!

用移码表示的话,简化了对于“0”的判断,即移码的特殊值(0和max)被检验比较容易。

用移码来表示阶码的话可以提高表示数据的精度。如果不是采用移码来表示阶码的话,那么阶码就会出现负值,这样的话当需要把该数据转换成非阶码浮点数据时我们将就需要对尾数进行左移(做乘法运算),这样的话我们会发现最先移去的是尾数的高位,因此这种方法不利于数据的精度表示。而对于才用移码表示阶码的话,我们在转换时是做右移操作,这样最先移去的是最低位,这样比较好地保持了数据的精度。

我们总结一下:

移码表示浮点数阶码的好处有:

 

方便比较大小和加减(阶码的经常性操作) 保证浮点数的机器零为全0 特殊值(0和max)比较容易检验 提高表示数据的精度

 

这些是我所了解到的原因, 如果还有大佬有补充,请留言!

如有错误,也请各位指正!

 

 

 

 

参考了帖下边liurh5826大佬的回答和百度百科

https://bbs.csdn.net/wap/topics/240065237

https://baike.baidu.com/item/%E7%A7%BB%E7%A0%81/10165919?fr=aladdin

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。