【发布时间】:2018-11-23 18:29:40
【问题描述】:
我曾经认为所有数字都以 2 的补码格式存储在计算机中。并且 2 的补码中没有 -0。但在 IEEE754 中,既有 +0 又有 -0。我在 JavaScript 中读到,所有数字都是 IEEE754。所以现在我很困惑。更重要的是,在 JavaScript 中,~a = -a -1。我以前以为是数字a的2补码变化引起的。但是如果 JavaScript 中的每个数字都存储为 IEEE754,我们如何将其转换为 2 的补码呢?
【问题讨论】:
-
2 的补码是 integer 值的表示方式。浮点值是另一种原生格式,其值表示二进制指数表示法。
-
@Pointy 谢谢。那么在 JavaScript 中,整数值也表示为浮点值,表示为 IEEE754 是否正确?
-
那么 JavaScript 数字总是双精度浮点值。在使用
~或|等布尔运算符评估子表达式的过程中,使用 32 位整数值,但一旦将值保存在变量或对象属性中,它始终是浮点值。 -
“那么,在 JavaScript 中,整数值也被表示为浮点值是正确的吗?”——不,在 JavaScript 中没有整数。
-
@JörgWMittag:你引用的文字是“整数值”。 JavaScript 确实有整数值。它使用 IEEE-754 浮点 type 来表示数字,其格式能够表示许多整数 值。
标签: javascript floating-point ieee-754 twos-complement