我是 C# 新手,找不到XNOR运算符来提供这个真值表:
aba XNOR b ---------------- TTT TFF FTF 快速傅里叶变换
有专门的运营商吗?或者我需要使用!(A^B)?
我是 C# 新手,找不到XNOR运算符来提供这个真值表:
aba XNOR b ---------------- TTT TFF FTF 快速傅里叶变换
有专门的运营商吗?或者我需要使用!(A^B)?
XNOR 只是布尔值的相等;使用A == B
.
这很容易被忽略,因为相等性通常不应用于布尔值。并且有些语言不一定有效。例如,在 C 中,任何非零标量值都被视为真,因此两个“真”值可能不相等。但是这个问题被标记为c#,我们应该说,它具有良好的布尔值。
另请注意,这并不能推广到您想要的按位运算0x1234 XNOR 0x5678 == 0xFFFFBBB3
(假设为 32 位)。为此,您需要从其他操作(例如~(A^B)
. (注:~
,不是!
。)
XOR = A 或 B,但不是 A & B 或两者都不是(不能相等 [!=])
因此 XNOR 是完全相反的,并且可以很容易地用 == 或 === 表示。
但是,非布尔值会出现问题,如下例所示:
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/there is a value )
alt 示例只是反转的 (a || b) && !(a && b) (XOR) 门
不,您需要使用!(A^B)
虽然我想你可以使用运算符重载来制作你自己的 XNOR。
您可以将===
运算符用于 XNOR。只是你需要转换a
和b
布尔。
if (!!a === !!b) {...}