32位浮点数16777216.0f 加 1 还是 16777216.0f

32位浮点数16777216.0f 加 1 为什么不是 16777217.0f ?

16777216二进制表示:
<1 00000000 00000000 00000000>
16777217二进制表示:
<1 00000000 00000000 00000001>
32位浮点数其中1位表示符号位,8位表示指数位,23位表示小数位。
加上隐含的1位小数位,隐含的这位总是1,并不存储,所以一共可以表示24位小数位。
16777217一共是25位,就需要进行取舍。这里是舍去末尾的1。
16777216.0f的二进制表示:
<01001011 10000000 00000000 00000000>
16777217.0f的二进制表示同样是:
<01001011 10000000 00000000 00000000>舍去了末尾的1。
再比如:16777220.0f的二进制表示:
<01001011 10000000 00000000 00000010>
16777221.0f的二进制表示同样也是:
<01001011 10000000 00000000 00000010>
以上是舍弃末尾1的情况。
同样也有进位的情况。
比如:16777218.0f 加 1 结果是 16777220.0f。
16777219的二进制表示:
<1 00000000 00000000 00000011>
末尾的1向前进位:
<1 00000000 00000000 00000100>
末尾的1是否进位,要看它的前一位是1还是0。
如果1的前一位是0,则不进位,如果1的前一位是1,则进位。
这就是所谓的中值取偶原则。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容