为什么JavaScript中的0x80000000 >> 1会产生负值?

los*_*rce 5 javascript bit-manipulation

使用按位操作/使用JavaScript进行一些测试

0x80000000 >> 1 // returns -1073741824 (-0x40000000)
Run Code Online (Sandbox Code Playgroud)

我希望从那以后返回0x40000000

0x40000000 >> 1 // returns 0x20000000
0x20000000 >> 1 // returns 0x10000000
Run Code Online (Sandbox Code Playgroud)

Mus*_*usa 9

这是一个算术转换,这就是为什么符号被保留,以进行逻辑移位使用>>>

0x80000000 >>> 1 // returns 1073741824 (0x40000000)
Run Code Online (Sandbox Code Playgroud)