在Javascript中进行以下比较:
(0xf0000000 & 0xf0000000) == 0xf0000000
为假,因为按位运算符会将数字转换为带符号的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/