JavaScript 整数移位安全 : (n << 1) ! = (n * 2)

标签 javascript integer integer-overflow

挖掘 JS 刚刚发现了一些新东西:

n = 0xffffffff
4294967295
n
4294967295
n << 1
-2
n * 2
8589934590
(n << 1) == (n * 2)
false
n + 1
4294967296

这是内置 FireFox(51.0.1 64 位)调试器的控制台输出...

到目前为止我所读到的内容(w3school 等)不允许我怀疑这种行为。

可以吗?还是我错过了什么?

...To be continued...

最佳答案

n << b handles n and the result as int 32 ,而 n * 2 handles n and the 2 number .

请注意4294967295 << 0将是-1 .

关于JavaScript 整数移位安全 : (n << 1) ! = (n * 2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42221373/

相关文章:

javascript - 如何在不刷新页面的情况下通过ajax发布URL参数更改

javascript - Ionic 2 上的 NavPush 中包含对象时出现间歇性错误

javascript - 开发垂直 "UL"菜单

java - 具有相同数据类型代码的相同逻辑代码在 Java 中传递但在 C++ 中不传递?

javascript - typescript 数组与任何[]

javascript - 是什么让长整数数值(16 个以上字符)在 JavaScript 中发生变化?

java - int不能转换成字符串?

java - ASN.1整数转普通整数

C 操作无符号整数 - 整数溢出

scala - 为什么不围绕整数溢出进行 Scala 设计?