【问题标题】:How many integers divisible by 2 can be represented in IEEE-754 floating point with double precision?IEEE-754 双精度浮点数可以表示多少个可被 2 整除的整数?
【发布时间】:2014-09-12 07:07:47
【问题描述】:

IEEE-754 双精度浮点数可以(可以)表示多少个可被 2 整除的正整数?

【问题讨论】:

  • 52 表示双精度
  • 没关系,当我遇到这个stackoverflow.com/questions/1848700/… 时,我只是脱掉袜子以计算​​更高一点,这使您的问题几乎重复,因此值得接近。
  • 因为它几乎是重复的,你能真正回答这个问题或在评论中给我一些提示吗?
  • @HighPerformanceMark 在尝试回答这个问题时,我发现它不是“所有整数都可以表示的较大界限”问题或您的问题的(接近)重复项,尽管它看起来有点像。

标签: floating-point ieee-754


【解决方案1】:

-254 和 254 之间的所有偶数都可以表示为 IEEE 754 双精度数。所有大小大于 254 的有限双精度数也恰好是应该计算的偶数。我们分别计算这两类数字,然后相加。

第一类代表所有数字 -(254-2), -(254-4), ..., -2, 0, 2, 4 , ..., (254-2).

第二类表示254+4、254+8等数字,以及21023等非常大的双精度数。这些数字是代表偶数整数的 IEEE 754 双精度数字,因此应将它们考虑在内。 此类别中的数字必须单独计算的原因是,在此范围内,并非所有偶数都可以表示为双精度 IEEE 754 数字(例如,254+2, 254+6,21023+1024是可表示的)。


第一类数字包含2 * 253 - 1个项目,从-(254-2)到254- 2.

第二个类别表示2 * (1024 - 54) binades(因素二是因为负binades和正binades都被计算在内),即2 * (1024 - 54) * 252 项。

这使得双精度偶数整数总数约为 8754997675608244224(在计算中给出或取一个误差)。

【讨论】:

  • 有一个 53 位尾数。如果 2^52 = 2^53,尾数的最后一位的值为 2^k,k >= 1,所以 x 是偶数。所有 >= 2^53 的双精度浮点数都是偶数。
  • @PascalCuoq:我相信你想要2 * (1024 - 54) * 2^52 来计算[2^54, 2^1024) 中具有绝对值的值。我同意2 * 2^53 - 1 对绝对值严格小于2^54 的偶数的计数。
  • 为什么区间[2^{54}...2^{54}]中的每个数字都是可表示的?为什么2^{54}+2 不可表示?
猜你喜欢
  • 2012-09-15
  • 2011-05-18
  • 2013-07-24
  • 2021-10-06
  • 2013-03-16
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 2012-01-06
相关资源
最近更新 更多