【问题标题】:largest integer that can be stored in a double such that all integers less than can be accurately stored as well可以存储在双精度中的最大整数,这样所有小于的整数也可以准确存储
【发布时间】:2016-01-06 14:22:23
【问题描述】:

这是对前段时间已经回答的问题的更多澄清:biggest integer that can be stored in a double

最佳答案提到“最大的整数,它和所有较小的整数可以存储在 IEEE 64 位双精度数中而不会丢失精度。IEEE 64 位双精度数有 52 位尾数,所以我认为它是 2^ 53:

因为:

  • 253 + 1 无法存储,因为开头的 1 和结尾的 1 之间的零太多。

  • 可以存储任何小于 253 的值,其中 52 位显式存储在尾数中,然后有效的指数为您提供另一个。

  • 253 显然可以存储,因为它是 2 的小幂。

有人可以澄清第一点吗?他这是什么意思?他是否在谈论例如,如果它是一个 4 位数字 1000 + 0001,您不能将其存储为 4 位吗? 253 只是第一位 1 其余的 0 对吗?为什么你不能在不损失精度的情况下加 1?

另外,“最大整数,使得它和所有较小的整数都可以存储在 IEEE 中”。是否有一些一般规则,如果我想找到最大的 n 位整数,以便它和所有较小的整数可以存储在 IEEE 中,我可以简单地说它是 2n 吗?例如,如果我要找到最大的 4 位整数,这样它和它下面的所有整数都可以表示,它会是 2^4?

【问题讨论】:

    标签: binary floating-point double precision ieee-754


    【解决方案1】:

    他是在说,例如,如果它是一个 4 位数字 1000 + 0001,你不能将它存储在 4 位中吗?

    不,他是说您不能将其存储在 3 位中。使用通常的二进制表示法。

    253 只是第一位 1,其余位 0 对吗?

    是的,1, 2, 4, ..., 253, 254, 255, ..., 2123、2124、……还有 0.125。

    这是我们正在谈论的浮点数。 253 只是一个隐含的 1,所有显式有效位均为 0,是的,但它不是唯一具有此属性的数字。关键属性是表示 253 的 ULP 是 2。所以 253 可以表示为范围内 2 的所有幂,而 253 +1 不能,因为 ULP 在该邻域中太大。

    另外,“最大整数,使得它和所有较小的整数都可以存储在 IEEE 中”。是否有一些一般规则,如果我想找到最大的 n 位整数,以便它和所有较小的整数可以存储在 IEEE 中,我可以简单地说它是 2n

    是的,在二进制 IEEE 754 浮点中,所有“可以存储它和所有较小整数的最大整数”都是 2 的幂,特别是 2n 其中 n 是有效数字的宽度(计算隐含位)。

    【讨论】:

      猜你喜欢
      • 2010-12-23
      • 1970-01-01
      • 2017-05-20
      • 2015-11-28
      • 2011-07-25
      • 1970-01-01
      • 2010-12-10
      • 2017-10-26
      • 2015-06-05
      相关资源
      最近更新 更多