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.