Je suis nouveau en C # et je n'ai pas pu trouver l' opérateur XNOR pour fournir cette table de vérité:
aba XNOR b ---------------- TTT TFF FTF FFT
Y a-t-il un opérateur spécifique pour cela? Ou j'ai besoin d'utiliser! (A ^ B)?
c#
boolean
boolean-operations
trailmax
la source
la source
==
d'opérandes booléens ...Réponses:
XNOR est simplement l'égalité sur les booléens; utiliser
A == B
.C'est une chose facile à manquer, car l'égalité n'est pas couramment appliquée aux booléens. Et il y a des langues où cela ne fonctionnera pas nécessairement. Par exemple, en C, toute valeur scalaire non nulle est traitée comme vraie, donc deux valeurs «vraies» peuvent être inégales. Mais la question a été étiquetéec #, qui a, dirons-nous, des booléens bien élevés.
Notez également que cela ne se généralise pas aux opérations au niveau du bit, où vous le souhaitez
0x1234 XNOR 0x5678 == 0xFFFFBBB3
(en supposant 32 bits). Pour cela, vous devez construire à partir d'autres opérations, comme~(A^B)
. (Remarque:~
non!
.)la source
!
opérateur peut être utilisé pour convertirint
« est à « bien comportés » booléens:!a==!b
.!!
(c'est deux opérateurs logiques "non") normalise toute valeur scalaire à0
ou1
.XOR = A ou B, mais pas A & B ou ni l'un ni l'autre (ne peut être égal [! =])
XNOR est donc l'oppoiste exact, et peut être facilement représenté par == ou ===.
Cependant, les cas non booléens présentent des problèmes, comme dans cet exemple:
à la place, utilisez ceci:
ou
le premier exemple retournera false (5! = 1), mais le second retournera true (les valeurs de a [valeur?] et b [valeur?] renvoient le même booléen, true (valeur = pas 0 / il y a une valeur )
l'exemple alt est juste la porte inversée (a || b) &&! (a && b) (XOR)
la source
Non, vous devez utiliser
!(A^B)
Bien que je suppose que vous pourriez utiliser la surcharge d'opérateurs pour créer votre propre XNOR.
la source
Vous pouvez utiliser l'
===
opérateur pour XNOR. Il vous suffit de convertira
etb
de booléen.la source
===
opérateur===
l'opérateur non coercitif est javascript et le double!!
avant une valeur dans une évaluation n'est pas non plus valide en c #