Javascript XOR操作(试图理解!)

vin*_*o83 0 javascript bit-manipulation xor

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

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

我有一些人编写的代码,他们正在做以下事情:

if (shouldBeCollapsed ^ 1)
{
   //code to collapse section of page.
}
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

Tre*_*nin 6

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

真值表如下:

X  Y  X^Y
0  0   0
0  1   1
1  0   1
1  1   0
Run Code Online (Sandbox Code Playgroud)

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

  • 也简单地理解为,"当两者都是真的时候是真的,但两者都是真的时候都不是." (2认同)