在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使用===
运算符。 只需要将a
和b
转换为bool。
if (!!a === !!b) {...}