根据Wikipedia的说法,js算术右移和左移运算符是<<
和>>
,虽然左移似乎工作正常,但右移似乎正在进行逐位移位,而不是算术移位
> 2 >> 1
1
> 2 << 1
4
> 1 >> 1
0
> 1 << 1
2
怎样才能得到算术移位?
发布于 2021-06-04 05:50:43
我不确定您期望的值是什么。算术位移位是JavaScript所做的,但如果不使用负值,您将永远看不到它。
例如:-1 >> 1 === -1
或-20 >> 1 === -10
如果这些是标准逻辑位移位,则结果将取决于值的位深度,并且在JavaScript上下文中没有意义。例如,逻辑位移位和算术位移位之间的差异(为简单起见):
-1将是1111 1111:
1111 1111算术右移= 1111 1111 (仍为-1,高位“粘滞”)
1111 1111逻辑右移= 0111 1111 (现在为127)
编辑:在JS中,如果你想使用逻辑右移,你可以使用>>>而不是>>。当你这样做的时候,它在32位整数上工作。所以:-1 >>> 1 === 2147483647
https://stackoverflow.com/questions/67828831
复制相似问题