使用按位运算/使用 JavaScript 进行移位测试
0x80000000 >> 1 // returns -1073741824 (-0x40000000)
我希望它会返回 0x40000000 因为
0x40000000 >> 1 // returns 0x20000000
0x20000000 >> 1 // returns 0x10000000
使用按位运算/使用 JavaScript 进行移位测试
0x80000000 >> 1 // returns -1073741824 (-0x40000000)
我希望它会返回 0x40000000 因为
0x40000000 >> 1 // returns 0x20000000
0x20000000 >> 1 // returns 0x10000000
在 Javascript 中,>>
是有符号右移运算符。在语言规范的第 11.7.2 节中,它说:
按右操作数指定的量对左操作数执行符号填充按位右移操作。
在移位完成之前,左操作数被转换为有符号的 32 位整数(规范中给出的算法的第 5 步)。在您的情况下,此转换会将给定的正数转换为负值。之后,实际移位完成,保留值的负号。