【问题标题】:Can IEEE 754 floating-point numbers represent the exact same value with multiple bit arrangements?IEEE 754 浮点数可以用多位排列表示完全相同的值吗?
【发布时间】:2016-03-10 19:15:32
【问题描述】:

IEEE 754 浮点数能否用多个位排列表示完全相同的值?

例如:
128 exp 3 == 1024.0
256 经验 2 == 1024.0
1024 exp 0 == 1024.0

IEEE 754 标准是否认为不同的位排列在比较时值相等,只要净值最终看起来相同?

我正在研究一些自定义压缩算法,如果有多种方法可以表示相同的值(用于增强压缩),这将非常有用。

【问题讨论】:

  • 你如何看待0和-0?它们都代表零,因此在某种意义上具有相同的值,但它们具有不同的符号位。
  • @PatriciaShanahan 这是同一值的多个位排列的另一个很好的例子。感谢您指出了这一点。看起来我需要注意二进制浮点数的 NaN 和零,以及十进制浮点数的其他冗余。
  • 请注意,1/+0 是正无穷大,而 1/-0 是负无穷大。通过“普通”算术和比较可以检测到一个与另一个替换。
  • 在压缩的上下文中,您可能应该将 -0 和 0 视为不同的值,因为它们可以有不同的行为。
  • @tmyklebu 和 PatriciaShanahan:感谢您的认可。很高兴知道这一点。我主要关心的是具有多种可能表示的非零有限数,因此将 0 和 -0 视为不同的值(以及具有不同行为的无穷大和 NaN)应该没问题。毕竟,问题是关于 EXACT 相同值的不同位排列,听起来 0 和 -0 不是完全相同的值,因为它们对标准操作的反应不同。

标签: floating-point ieee-754 ieee


【解决方案1】:

通常的二进制 IEEE 754 浮点类型没有您所指的那种冗余。数字总是标准化,因此有效数字在1.02.0 之间(或在二进制1.010.0 之间)。它们确实有诸如正零和负零之类的东西,以及许多具有不同内部表示的NaN

然而,较新的 十进制 IEEE 754 浮点类型确实具有这种冗余:像 3.14 这样的数字可以表示为具有指数 2 的 3143140 指数为 3; 31400 指数为 4;等等。

【讨论】:

    猜你喜欢
    • 2012-01-06
    • 2013-02-16
    • 2017-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    • 1970-01-01
    相关资源
    最近更新 更多