如何使Javascript按位运算符在C中表现得像?

时间:2017-02-08 00:13:58

标签: javascript

在Javascript中进行以下比较:

    public async Task Action(...)
    {
       string content = await response.Content.ReadAsStringAsync();
       cache.Set("responselist", content, policy);

       /* ... */

       string content = cache["responselist"] as string;
     }

为false,因为按位运算符将数字转换为有符号的int32。 (0xf0000000 & 0xf0000000) == 0xf0000000 的结果为负数,&为正数

有没有办法让它表现得像我希望它在C中表现一样?

2 个答案:

答案 0 :(得分:1)

使用XOR运算符并与0进行比较。

(0xf0000000 & 0xf0000000) ^ 0xf0000000 === 0

如果A ^ B

0将为A === B

答案 1 :(得分:1)

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