2014-01-14 36 views
0

我一直在研究插入符號(XOR)運算符在Javascript,但我有一個很難理解到底。的Javascript XOR運算(試圖理解!)

有人能解釋爲什麼,例如,1^1 = 0?

我有一些代碼有人寫,和他們正在做以下幾點:

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

但如果shouldBeCollapsed變量等於1,條件不滿足。我只是想了解^運算符背後的邏輯,這有點令我困惑!

謝謝!

+1

無論誰寫這段代碼都應該受到嚴厲的懲罰。 – georg

回答

6

這就是異或的定義。 X^Y是1當且僅當X = Y。 因此,如果X和Y均爲1,則異或爲0。

的真值表如下所示:

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

X^Y是邏輯上等同於(X && !Y) || (!X && Y)

+0

是和'shouldBeCollapsed^1'評估爲TRUE;當'shouldBeCollapsed!= 1' –

+2

也簡單地理解爲,「真當要麼是真實的,而不是在無一不是如此。」 – Ned

+0

@NedNowotny很好的說法。 – Trenin

2

讓我用一個例子:

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

在按位水平,A^B = 1 if A != B

shouldBeCollapsed看起來像在這種情況下,你做錯了一個布爾變量。你在找什麼:

if (shouldBeCollapsed) { 
    // Code to collapse 
}