2014-01-15 3 views
3

Как сделать чистую булевскую добавку в javascript?Булевое добавление в Javascript

1+1 = 0; 
1+0 = 1; 
1+1+1 = 1; 

и т. Д. Можно ли просто суммировать булевы?

true+true = false 
false+true = true; 

т.д.

+0

Не '1 + 1' должен быть 1 в булевом добавлении? – basilikum

+1

@ basilikum № '0 + 0 = 0',' 0 + 1 = 1', '1 + 0 = 1' и' 1 + 1 = 0 (с переносом 1) '. Следовательно, булево сложение является оператором xor и перенос может быть найден с использованием булевого умножения (т. Е. Оператора and). –

+0

@AaditMShah Hmm ... ok, но тогда почему каждый найденный мной источник говорит, что логическое дополнение эквивалентно OR и что '1 + 1' равно' 1'. – basilikum

ответ

8

Просто используйте bitwise XOR operator:

1^1 = 0 
1^0 = 1 
1^1^1 = 1 

FWIW: Те же работы для большинства языков программирования высокого уровня.

+0

Это не то же самое, что и булево дополнение. Булево сложение является оператором xor. –

+0

@AaditMShah Я думаю, что эквивалент булевского дополнения действительно является оператором OR. Посмотрите на это, например: http://www.allaboutcircuits.com/vol_4/chpt_7/2.html – basilikum

+0

@basilikum Я понимаю, что вы пытаетесь сказать, но я считаю, что OP хочет создать сумматор в JavaScript. Следовательно, сумма найдена с помощью xor, и перенос найден с использованием и. См .: http://en.wikipedia.org/wiki/Adder_(электроника) –

0
1^1 = 0; 
1^0 = 1; 

для булева это может быть достигнуто с помощью короткого замыкания и и операторы.

function myXOR(a,b) { 
     return (a || b) && !(a && b);  
} 
myXOR(true,true) == false 
Смежные вопросы