Saya baru mengenal C # dan tidak dapat menemukan operator XNOR untuk menyediakan tabel kebenaran ini:
aba XNOR b ---------------- TTT TFF FTF FFT
Apakah ada operator khusus untuk ini? Atau saya perlu menggunakan! (A ^ B)?
c#
boolean
boolean-operations
trailmax
sumber
sumber
==
operan boolean ...Jawaban:
XNOR hanyalah persamaan pada boolean; gunakan
A == B
.Ini adalah hal yang mudah untuk dilewatkan, karena kesetaraan tidak umum diterapkan pada boolean. Dan ada bahasa di mana itu tidak selalu berhasil. Misalnya, dalam C, nilai skalar non-nol dianggap benar, sehingga dua nilai "benar" bisa tidak sama. Tapi pertanyaannya sudah ditandaic #, yang telah, harus kita katakan, para boolean berperilaku baik.
Perhatikan juga bahwa ini tidak menggeneralisasi ke operasi bitwise, di mana Anda inginkan
0x1234 XNOR 0x5678 == 0xFFFFBBB3
(dengan asumsi 32 bit). Untuk itu, Anda perlu membangun dari operasi lain, seperti~(A^B)
. (Catatan:,~
bukan!
.)sumber
!
operator dapat digunakan untuk mengkonversiint
's untuk 'berperilaku baik' boolean:!a==!b
.!!
(itu dua operator "bukan" yang logis) menormalkan nilai skalar apa pun ke0
atau1
.XOR = A atau B, tetapi Bukan A & B atau keduanya (Tidak bisa sama dengan [! =])
Karena itu XNOR adalah oposisi yang tepat, dan dapat dengan mudah diwakili oleh == atau ===.
Namun, kasus non-boolean menimbulkan masalah, seperti dalam contoh ini:
alih-alih, gunakan ini:
atau
contoh pertama akan mengembalikan false (5! = 1), tetapi yang kedua akan mengembalikan true (nilai []? )
contoh alt hanyalah gerbang yang dibalik (a || b) &&! (a && b) (XOR)
sumber
Tidak, Anda harus menggunakan
!(A^B)
Meskipun saya kira Anda bisa menggunakan overloading operator untuk membuat XNOR Anda sendiri.
sumber
Anda dapat menggunakan
===
operator untuk XNOR. Hanya Anda perlu mengkonversia
danb
menjadi bool.sumber
===
operator===
operator non-koersif adalah javascript dan dobel!!
sebelum nilai dalam evaluasi tidak valid dalam c # baik