Javascript XOR操作(试图理解!)

时间:2014-01-14 15:42:13

标签: javascript bit-manipulation xor

我一直在研究Javascript中的插入符号(XOR)操作符,但我很难理解。

有人可以解释为什么,例如,1 ^ 1 = 0?

我有一些人编写的代码,他们正在执行以下操作:

if (shouldBeCollapsed ^ 1)
{
   //code to collapse section of page.
}

但是如果shouldBeCollapsed变量等于1,则条件失败。我只是想了解^运算符背后的逻辑,这让我感到困惑!

谢谢!

2 个答案:

答案 0 :(得分:6)

这是XOR的定义。如果X!= Y,则X ^ Y为1。 因此,如果X和Y都是1,则XOR为0。

真值表如下:

X  Y  X^Y
0  0   0
0  1   1
1  0   1
1  1   0

X ^ Y在逻辑上等同于(X && !Y) || (!X && Y)

答案 1 :(得分:2)

让我举一个例子说明:

2 ^ 1 = 3
In binary
10 ^ 01 = 11

按位级别A^B = 1 if A != B

shouldBeCollapsed看起来像一个布尔变量,在这种情况下你做错了。你在寻找的是:

if (shouldBeCollapsed) { 
    // Code to collapse
}