在C#中是否有XNOR(逻辑双向)运算符?

我是C#的新手,无法findXNOR运算符来提供这个真值表:

 aba XNOR b
 ----------------
 TTT
 TFF
 FTF
 FFT

有没有一个特定的操作符? 或者我需要使用!(A ^ B)?

XNOR简直是平等的布尔人; 使用A == B

这是一件容易的事情,因为平等不适用于布尔人。 有些语言不一定能工作。 例如,在C中,任何非零标量值都被视为真,因此两个“真”值可能不相等。 但是这个问题被贴上了c#标签,我们应该说,这是一个乖巧的布尔人。

还要注意,这并没有推广0x1234 XNOR 0x5678 == 0xFFFFBBB3运算,你想要0x1234 XNOR 0x5678 == 0xFFFFBBB3 (假设32位)。 为此,您需要从其他操作构build,如~(A^B) 。 (注意~ ,不!

XOR = A或B,但不是A&B或不是(不能等于[!=])
XNOR因此是精确的oppoiste,可以用==或===表示。

但是,非布尔情况下会出现问题,如下例所示:

 a = 5 b = 1 if (a == b){ ... } 

相反,使用这个:

 a = 5 b = 1 if((a && b) || (!a && !b)){ ... } 

要么

 if(!(a || b) && (a && b)){ ... } 

第一个例子将返回false(5!= 1),但第二个将返回true(a [value?]和b [value?]的值返回相同的布尔值true(value = not 0 /有一个值)

这个例子就是倒过来的(a || b)&&!(a && b)(XOR)门

不,你需要使用!(A^B)

虽然我想你可以使用运算符重载来创build自己的XNOR。

您可以对XNOR使用===运算符。 只需要将ab转换为bool。

 if (!!a === !!b) {...}