在 Javascript 中进行以下比较:
(0xf0000000 & 0xf0000000) == 0xf0000000
为 false,因为按位运算符将数字转换为有符号 int32。 &
的结果是负数,0xf0000000
的结果是正数
有没有办法让它像我期望的那样在 C 中运行?
最佳答案
Section 12.9.5 of Ecma 262 7.0 (ES 2016) 定义无符号右移运算符 (>>>
) 以返回无符号 32 位整数。情况就是如此at least since ES 5 .
换句话说,当移位0时,您可以使用此运算符将int32值转换为uint32值。
因此,您只需将表达式更改为
(0xf0000000 & 0xf0000000) >>> 0 == 0xf0000000
产生true
。
关于javascript - 如何使 Javascript 按位运算符的行为像 C 中一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42102412/