Я новичок в C # и не могу найти оператор XNOR, чтобы предоставить эту таблицу истинности:
аба XNOR б ---------------- ТТТ ПТФ ФТФ FFT
Есть ли конкретный оператор для этого? Или мне нужно использовать! (A ^ B)?
Я новичок в C # и не могу найти оператор XNOR, чтобы предоставить эту таблицу истинности:
аба XNOR б ---------------- ТТТ ПТФ ФТФ FFT
Есть ли конкретный оператор для этого? Или мне нужно использовать! (A ^ B)?
Ответы:
XNOR - это просто равенство по логическим значениям; использовать A == B
.
Это легко упустить, поскольку равенство обычно не применяется к логическим значениям. И есть языки, где это не обязательно будет работать. Например, в C любое ненулевое скалярное значение считается истинным, поэтому два «истинных» значения могут быть неравными. Но вопрос был помеченC #, который, скажем так, хорошо ведет себя булевы.
Также обратите внимание, что это не распространяется на побитовые операции, где вы хотите 0x1234 XNOR 0x5678 == 0xFFFFBBB3
(при условии 32 бит). Для этого вам необходимо создать другие операции, например ~(A^B)
. (Примечание: ~
нет !
.)
!
оператор может быть использовано для преобразования int
«с до„хорошо себя“булева: !a==!b
.
!!
(это два логических оператора «не») нормализует любое скалярное значение для 0
или 1
.
XOR = A или B, но не A & B или ни то, ни другое (не может быть равным [! =]).
Следовательно, XNOR является точной противоположностью и может быть легко представлен как == или ===.
Тем не менее, небулевые случаи представляют проблемы, как в этом примере:
a = 5
b = 1
if (a == b){
...
}
вместо этого используйте это:
a = 5
b = 1
if((a && b) || (!a && !b)){
...
}
или
if(!(a || b) && (a && b)){
...
}
первый пример вернет false (5! = 1), но второй вернет true (значения a [value?] и b [value?] возвращают одно и то же логическое значение, true (значение = не 0 / есть значение) )
альтернативный пример - просто перевернутые (a || b) &&! (a && b) (XOR) ворота
Нет, вам нужно использовать !(A^B)
Хотя я полагаю, вы могли бы использовать перегрузку операторов для создания собственного XNOR.
Вы можете использовать ===
оператор для XNOR. Просто нужно конвертировать a
и b
кипеть.
if (!!a === !!b) {...}
===
оператора
===
не принудительный оператор является javascript, и двойное число !!
перед значением в оценке также недопустимо в c #
==
булевы операнды ...