Javascript算术右移

Javascript Arithmetic shift right

根据 Wikipedia,js 算术右移和左移运算符是 <<>>,虽然左移似乎工作正常,但右移似乎在做位移位而不是算术位移

> 2 >> 1
1
> 2 << 1
4
> 1 >> 1
0
> 1 << 1
2

我怎样才能得到算术移位?

我不确定您期望的值是什么。算术位移是 JavaScript 所做的,但如果不使用负值,您将永远看不到它。

例如: -1 >> 1 === -1 要么 -20 >> 1 === -10

如果这些是标准的逻辑位移,结果将取决于值的位深度,并且在 JavaScript 的上下文中没有意义。例如,8 位中逻辑位移和算术位移的区别(为简单起见):

-1 将是 1111 1111:

1111 1111算术右移=1111 1111(还是-1,高位“粘”)

1111 1111 逻辑右移 = 0111 1111(现在是 127)

编辑:在JS中,如果要使用逻辑右移,可以使用>>>代替>>。当您这样做时,它适用于 32 位整数。所以: -1 >>> 1 === 2147483647