【发布时间】: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