美文网首页
32位浮点数16777216.0f 加 1 还是 1677721

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

作者: 863cda997e42 | 来源:发表于2021-09-23 10:26 被阅读0次

    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,则进位。
    这就是所谓的中值取偶原则。

    相关文章

      网友评论

          本文标题:32位浮点数16777216.0f 加 1 还是 1677721

          本文链接:https://www.haomeiwen.com/subject/inwngltx.html