Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使Javascript按位运算符的行为类似于C?_Javascript - Fatal编程技术网

如何使Javascript按位运算符的行为类似于C?

如何使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)

在Javascript中,进行以下比较:

(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。