Jestem nowy w C # i nie mogę znaleźć operatora XNOR , aby podać tę tabelę prawdy:
aba XNOR b ---------------- TTT TFF FTF FFT
Czy jest do tego konkretny operator? Albo muszę użyć! (A ^ B)?
c#
boolean
boolean-operations
trailmax
źródło
źródło
==
operandy boolowskie ...Odpowiedzi:
XNOR to po prostu równość wartości logicznych; używać
A == B
.Łatwo to przeoczyć, ponieważ równość nie jest powszechnie stosowana do wartości logicznych. Są języki, w których to niekoniecznie będzie działać. Na przykład w języku C każda niezerowa wartość skalarna jest traktowana jako prawda, więc dwie „prawdziwe” wartości mogą być nierówne. Ale pytanie zostało oznaczonedo#, która ma, powiedzmy, grzeczne wartości logiczne.
Zauważ również, że nie jest to uogólnione na operacje bitowe, gdzie chcesz
0x1234 XNOR 0x5678 == 0xFFFFBBB3
(zakładając 32 bity). W tym celu musisz wykorzystać inne operacje, takie jak~(A^B)
. (Uwaga:~
nie!
.)źródło
!
operator może użyć do przeprowadzeniaint
„S«do dobrze zachowujących»logicznych:!a==!b
.!!
(to dwa logiczne operatory „nie”) normalizuje dowolną wartość skalarną do0
lub1
.XOR = A lub B, ale nie A i B lub żadne (nie może być równe [! =])
XNOR jest zatem dokładnym przeciwieństwem i można go łatwo przedstawić za pomocą == lub ===.
Jednak przypadki inne niż boolowskie stwarzają problemy, jak w tym przykładzie:
zamiast tego użyj tego:
lub
pierwszy przykład zwróci fałsz (5! = 1), ale drugi zwróci prawdę (wartości a [wartość?] i b [wartość?] zwracają tę samą wartość logiczną, prawda (wartość = nie 0 / istnieje wartość )
przykład alt jest po prostu odwróconą bramką (a || b) &&! (a && b) (XOR)
źródło
Nie, musisz użyć
!(A^B)
Chociaż przypuszczam, że możesz użyć przeciążenia operatorów, aby stworzyć własny XNOR.
źródło
Możesz użyć
===
operatora dla XNOR. Wystarczy przekonwertowaća
ib
bool.źródło
===
operatora===
operatorem bez przymusu jest javascript, a podwójna!!
wartość przed wartością w ocenie nie jest poprawna w c #