我是新的C#,找不到XNOR運營商提供這種真值表:C#中是否存在XNOR(邏輯雙向)運算符?
a b a XNOR b ---------------- T T T T F F F T F F F T
是否有一個特定的運營商呢?或者我需要使用!(A^B)?
我是新的C#,找不到XNOR運營商提供這種真值表:C#中是否存在XNOR(邏輯雙向)運算符?
a b a XNOR b ---------------- T T T T F F F T F F F T
是否有一個特定的運營商呢?或者我需要使用!(A^B)?
XNOR簡直就是平等的布爾人;使用A == B
。
這是一件很容易遺漏的事情,因爲平等不適用於布爾人。有些語言不一定有效。例如,在C中,任何非零標量值都被視爲真,因此兩個「真」值可能不相等。但是這個問題被標記爲c#,我們應該說,這是乖巧的布爾值。
還要注意,這並沒有推廣到按位操作,你想要0x1234 XNOR 0x5678 == 0xFFFFBBB3
(假設32位)。爲此,您需要從其他操作構建,如~(A^B)
。 (注意:~
,不!
)
當然是!我現在覺得自己很愚蠢 - ) – trailmax
@trailmax:不需要感到愚蠢,這很容易錯過。 (清理併入到答案中的註釋。) –
在C中,可以使用'!'運算符將'int'轉換爲「良好行爲」的布爾值:'!a ==!b'。 –
XOR = A或B,而不是& B或既不(不能等於[=!])
XNOR因此確切oppoiste,並且可以很容易地由==或===表示。
然而,非布爾例存在的問題,像在本例中:
a = 5
b = 1
if (a == b){
...
}
代替,使用:
a = 5
b = 1
if((a && b) || (!a && !b)){
...
}
或
if(!(a || b) && (a && b)){
...
}
第一示例將返回假(5!= 1),但第二個將返回true(a [value?]和b [value?]的值返回相同的布爾值,真(值=不是0 /有一個值)
alt示例只是反轉(a || B)& &!(一& & B)(XOR)門
該運算符通常被稱爲布爾操作數的== == –
@Magnus Hoff:非常好的一點! – sll
我認爲這句話「看不見樹木」在這裏非常合適。投票,因爲我們都在這裏一次或兩次;) – spender