do it once 和 do through loop 的算术右移区别
Arithmetic right shift difference between do it once and do through loop
不知道为什么两次算术运算的结果不一样。你能阐明这个问题吗?
x=-93242
for (let i=0; i<40; i++) x >>= 1;
// now x is -1
y=-93242
y>>=40;
// now y is not -1
Javascript 只支持最多 32 位的位运算。由于您试图将 y
向右移动 40 位,因此它是 returning y>>=8
。
右移 31 位会 return -1
由于 x
每次迭代仅右移一次,因此它停留在 -1
因为 -1>>=1
将始终是 -1
.
不知道为什么两次算术运算的结果不一样。你能阐明这个问题吗?
x=-93242
for (let i=0; i<40; i++) x >>= 1;
// now x is -1
y=-93242
y>>=40;
// now y is not -1
Javascript 只支持最多 32 位的位运算。由于您试图将 y
向右移动 40 位,因此它是 returning y>>=8
。
右移 31 位会 return -1
由于 x
每次迭代仅右移一次,因此它停留在 -1
因为 -1>>=1
将始终是 -1
.