在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/

10-13 01:10