在 IEEE 754 和 JavaScript 中,0 和 -0 的表示方式有何不同?
Posted
技术标签:
【中文标题】在 IEEE 754 和 JavaScript 中,0 和 -0 的表示方式有何不同?【英文标题】:In IEEE 754 and JavaScript, how is 0 and -0 represented differently? 【发布时间】:2014-01-01 10:10:43 【问题描述】:我很好奇,即使是0 === -0
,但1/0
和1/-0
给出不同的结果。所以我们大概可以假设 0
和 -0
在 IEEE 754 中的表示方式不同。它们是如何表示的?
更新:到目前为止,我可以在https://en.wikipedia.org/wiki/Signed_zero上找到一些信息
似乎有 IEEE 754-1985 和 IEEE 754-2008,一种形式可能是二进制:
0 00000000 00000000000000000000000 as positive 0
1 00000000 00000000000000000000000 as negative 0
(以上为32位,最左边为符号位,再往右,8位为指数,23位为有效位)。但我找不到 1985 和 2008 版本之间的区别。
【问题讨论】:
Wikpiedia 没有帮助? 在 71kb 的***文章中,我搜索了-0
,但没有找到任何东西。我不认为可以在 Internet 或 Wikipedia 上找到某些东西,所以这不是 SO 上的问题
【参考方案1】:
见:
IEEE 754-1985 on Wikipedia
IEEE 754-2008 on Wikipedia
有关更改,请参阅the "IEEE 754 revision" page on Wikipedia。
1985 和 2008 版本都使用有符号零。 它们表示为:
sign = 0 表示正零,1 表示负零。
有偏指数 = 0。
分数 = 0。
(正如您在问题中所写的那样)
编辑:在 1985 和 2008 版本中,1/0 = 无穷大,而 1/-0 = 负无穷大。
【讨论】:
我已为您添加了第三个链接(但在我的编辑经过同行评审之前它不会显示)。 你从哪里得到 1865 的数字? 这叫错字=)(对不起)以上是关于在 IEEE 754 和 JavaScript 中,0 和 -0 的表示方式有何不同?的主要内容,如果未能解决你的问题,请参考以下文章