挖掘 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 等)不允许我怀疑这种行为。
可以吗?还是我错过了什么?
最佳答案
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/