Как сделать чистую булевскую добавку в javascript?Булевое добавление в Javascript
1+1 = 0;
1+0 = 1;
1+1+1 = 1;
и т. Д. Можно ли просто суммировать булевы?
true+true = false
false+true = true;
т.д.
Как сделать чистую булевскую добавку в javascript?Булевое добавление в Javascript
1+1 = 0;
1+0 = 1;
1+1+1 = 1;
и т. Д. Можно ли просто суммировать булевы?
true+true = false
false+true = true;
т.д.
Просто используйте bitwise XOR operator:
1^1 = 0
1^0 = 1
1^1^1 = 1
FWIW: Те же работы для большинства языков программирования высокого уровня.
Это не то же самое, что и булево дополнение. Булево сложение является оператором xor. –
@AaditMShah Я думаю, что эквивалент булевского дополнения действительно является оператором OR. Посмотрите на это, например: http://www.allaboutcircuits.com/vol_4/chpt_7/2.html – basilikum
@basilikum Я понимаю, что вы пытаетесь сказать, но я считаю, что OP хочет создать сумматор в JavaScript. Следовательно, сумма найдена с помощью xor, и перенос найден с использованием и. См .: http://en.wikipedia.org/wiki/Adder_(электроника) –
Что вы ищете является xor operator:
1^1 = 0;
1^0 = 1;
1^1^1 = 1;
1^1 = 0;
1^0 = 1;
для булева это может быть достигнуто с помощью короткого замыкания и и операторы.
function myXOR(a,b) {
return (a || b) && !(a && b);
}
myXOR(true,true) == false
Не '1 + 1' должен быть 1 в булевом добавлении? – basilikum
@ basilikum № '0 + 0 = 0',' 0 + 1 = 1', '1 + 0 = 1' и' 1 + 1 = 0 (с переносом 1) '. Следовательно, булево сложение является оператором xor и перенос может быть найден с использованием булевого умножения (т. Е. Оператора and). –
@AaditMShah Hmm ... ok, но тогда почему каждый найденный мной источник говорит, что логическое дополнение эквивалентно OR и что '1 + 1' равно' 1'. – basilikum