Ich bin neu in C # und konnte keinen XNOR- Operator finden, der diese Wahrheitstabelle bereitstellt:
aba XNOR b ---------------- TTT TFF FTF FFT
Gibt es dafür einen bestimmten Operator? Oder muss ich verwenden! (A ^ B)?
c#
boolean
boolean-operations
Trailmax
quelle
quelle
==
für boolesche Operanden ...Antworten:
XNOR ist einfach Gleichheit auf Booleschen Werten. verwenden
A == B
.Dies ist leicht zu übersehen, da Gleichheit normalerweise nicht auf Boolesche Werte angewendet wird. Und es gibt Sprachen, in denen es nicht unbedingt funktioniert. In C wird beispielsweise jeder Skalarwert ungleich Null als wahr behandelt, sodass zwei "wahre" Werte ungleich sein können. Aber die Frage wurde markiertc #, die, sollen wir sagen, gut erzogene Boolesche Werte hat.
Beachten Sie auch, dass dies nicht auf bitweise Operationen verallgemeinert wird, bei denen Sie möchten
0x1234 XNOR 0x5678 == 0xFFFFBBB3
(unter der Annahme von 32 Bit). Dafür müssen Sie aus anderen Operationen aufbauen, wie z~(A^B)
. (Hinweis:~
nicht!
.)quelle
!
Operator verwendet werden, umint
's in "gut erzogene" Boolesche Werte zu konvertieren :!a==!b
.!!
(das sind zwei logische "Nicht" -Operatoren) normalisiert jeden Skalarwert auf0
oder1
.XOR = A oder B, aber nicht A & B oder keines (Kann nicht gleich sein [! =])
XNOR ist daher der genaue Gegner und kann leicht durch == oder === dargestellt werden.
Nicht-boolesche Fälle stellen jedoch Probleme dar, wie in diesem Beispiel:
Verwenden Sie stattdessen Folgendes:
oder
Das erste Beispiel gibt false zurück (5! = 1), das zweite gibt true zurück (a [Wert?] und b [Wert?]. Die Werte geben den gleichen Booleschen Wert zurück, true (Wert = nicht 0 / es gibt einen Wert) )
Das alte Beispiel ist nur das umgekehrte (a || b) &&! (a && b) (XOR) Gatter
quelle
Nein, Sie müssen verwenden
!(A^B)
Ich nehme an, Sie könnten die Operatorüberladung verwenden, um Ihr eigenes XNOR zu erstellen.
quelle
Sie können den
===
Operator für XNOR verwenden. Sie müssen nur konvertierena
undb
boolen.quelle
===
Operator===
der nicht erzwungene Operator ist Javascript und das Double!!
vor einem Wert in einer Bewertung ist auch in c # nicht gültig