Есть XNOR (логическое двойное условие) оператор в C#?
Я новичок в C# и не могу найти XNOR оператор для предоставления этой таблицы истинности:
a b a XNOR b ---------------- T T T T F F F T F F F T
есть ли конкретный оператор для этого? Или мне нужно использовать !(A^B)?
4 ответа:
XNOR-это просто равенство булевых значений; используйте
A == B
.это легко пропустить, так как равенство обычно не применяется к булевым значениям. И есть языки, где это не обязательно работать. Например, в C любое ненулевое скалярное значение рассматривается как true, поэтому два "истинных" значения могут быть неравными. Но вопрос был помечен c#, который имеет, скажем так, хорошие булевы.
обратите внимание также, что это не обобщает на побитовые операции, куда хочешь
0x1234 XNOR 0x5678 == 0xFFFFBBB3
(предполагая, что 32 бита). Для этого вам нужно построить из других операций, таких как~(A^B)
. (Примечание:~
, а не!
.)
XOR = A или B, но не A & B или ни один (не может быть равно [!=])
Поэтому XNOR является точным oppoiste и может быть легко представлен == или ===.однако не булевы случаи представляют проблемы, как в этом примере:
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[значение?] 's значения возвращают то же логическое значение true (value = не 0/есть значение)
пример alt-это просто обратный (a / / b) && !(a && b) (XOR) ворота