【问题标题】:Why is infinity's floating point representation apparently 0^n?为什么无穷大的浮点表示显然是 0^n?
【发布时间】:2012-05-18 17:08:51
【问题描述】:

我正在尝试理解浮点表示。我不明白浮点中的“无穷大”“NaN”表示。 我在看表provided by TopCoder

无穷大由全 1 的指数和全 0 的尾数表示。

我只能将它读为 0^n,我不确定它是如何趋向于无穷大的。

【问题讨论】:

  • 这只是一种特殊的表示形式 - 您不会将数字解释为普通的浮点值。
  • 感谢 Paul,我的印象是这些位模式通过一些方法评估为无穷大。
  • 否 - FPU 将诸如 NaN 和 INF 之类的句柄值视为特殊情况,以便在计算中使用它们时它们的行为正确,但位模式没有任何技巧。

标签: floating-point nan infinity


【解决方案1】:

您应该简单地忽略使用的位模式,并将无穷大和 NaN 视为特殊值。除非你对你的浮点数做一些摆弄(我认为很少有理由这样做),否则你只会在 IEEE 规则说应该创建它们的地方遇到这些值,忽略以下问题是安全的计算机如何代表它们。即使你做的不仅仅是标准计算,我估计 99% 的时间,位模式都无关紧要。

当然,以上都不是说您应该忽略标准、有限、非零浮点数的实现。尽管从尾数/指数到内存中的位的步骤仍然几乎不相关。在您链接到的页面中,作者声称“C++ 中的全局变量被初始化为零位模式”——这是错误的。 C++ 中的全局变量POD 类型 使用语义零所需的任何位模式进行初始化(第 3.6.2.2 节、第 8.5.5 节)。我相信 C++ 标准对任何浮点值都不需要任何特定的位模式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-16
    • 2023-03-20
    • 2021-05-04
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多