在 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/01/-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 的表示方式有何不同?的主要内容,如果未能解决你的问题,请参考以下文章

ieee754单精度浮点数 表示方法

IEEE 754 中 Infinity 的用例是啥

IEEE-754 蟒蛇

IEEE 754的简介

IEEE754 浮点数系统中的 NaN 和 +-INF

IEEE754表示浮点数