如何使Javascript按位运算符的行为类似于C?
在Javascript中,进行以下比较:如何使Javascript按位运算符的行为类似于C?,javascript,Javascript,在Javascript中,进行以下比较: (0xf0000000 & 0xf0000000) == 0xf0000000 为false,因为按位运算符将数字转换为带符号的int32。&的结果为负数,0xf0000000的结果为正数 有没有一种方法可以使它像我期望的那样在C中运行?使用XOR运算符并与0进行比较 (0xf0000000&0xf0000000)^0xf0000000==0 A^B将为0如果A===B使用异或运算符并与0进行比较 (0xf0000000&0xf0000000)
(0xf0000000 & 0xf0000000) == 0xf0000000
为false,因为按位运算符将数字转换为带符号的int32。&
的结果为负数,0xf0000000
的结果为正数
有没有一种方法可以使它像我期望的那样在C中运行?使用XOR运算符并与0进行比较
(0xf0000000&0xf0000000)^0xf0000000==0
A^B
将为0
如果A===B
使用异或运算符并与0进行比较
(0xf0000000&0xf0000000)^0xf0000000==0
A^B
将是0
如果A===B
(ES 2016)定义无符号右移运算符(>
)以返回无符号32位整数。情况就是这样
换句话说,当移位0时,可以使用此运算符将int32值转换为uint32值
因此,只需将表达式更改为
(0xf0000000 & 0xf0000000) >>> 0 == 0xf0000000
它产生true
(ES 2016)定义无符号右移运算符(>
)以返回无符号32位整数。情况就是这样
换句话说,当移位0时,可以使用此运算符将int32值转换为uint32值
因此,只需将表达式更改为
(0xf0000000 & 0xf0000000) >>> 0 == 0xf0000000
这会产生
true
一点变通方法,但您始终可以使用0xf0000000 | 0
将右侧转换为带符号的int32。这是一点变通方法,但您也可以始终使用0xf0000000 | 0
将右侧转换为带符号的int32。