2014-01-14 2 views
0

Я изучал оператор каретки (XOR) в Javascript, но у меня есть понимание сложного понимания.Операция Javascript XOR (пытаюсь понять!)

Может кто-нибудь объяснить, почему, например, 1^1 = 0?

У меня есть некоторый код, кто-то написал, и они делают следующее:

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

Но если shouldBeCollapsed переменная равна 1, то условие не выполняется. Я просто пытаюсь понять логику оператора ^, и это меня немного сбивает с толку!

Спасибо!

+1

Тот, кто написал этот код, должен быть строго наказан. – georg

ответ

6

Это определение XOR. X^Y является 1 тогда и только тогда X = Y. Таким образом, если 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)

+0

yes и '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 
} 
Смежные вопросы