[英]Is there XNOR (Logical biconditional) operator in C#?
我是 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)
。 (注意: ~
,不是!
。)
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)? 但第二个将返回真(a[value?] 和 b[value,] 的值返回相同的布尔值,真(值 = 非 0/有值)
alt 示例只是反转的 (a || b) && !(a && b) (XOR) 门
不,您需要使用!(A^B)
虽然我想你可以使用运算符重载来制作你自己的 XNOR。
在整个讨论中,我认为有一些按位操作不是常规操作。 即使在 c 中,追加或插入到字符串的末尾,在标准 IO 和数学库中都很熟悉。 这就是我认为问题出在 not 和 Xnor 的地方,不熟悉 python 但我提出以下示例
function BitwiseNor(a as integer) l as string l=str(a) s as string For i=len(l) to 0 s=(str(i)+"="+Bin(i)) //使用字符串在这个例子中,因为在语言中不存在二进制或以 2 为底的数字,所以我接下来使用了 endfunction s
function BitwiseXNor(a as integer,b as integer) r as integer d as integer c as string c=str(BitwiseOr(a,b)) r=(val(c,2)) //the number to in this conversion is基数值 endfunction r
您可以对 XNOR 使用===
运算符。 只需要将a
和b
转换为布尔值。
if (!!a === !!b) {...}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.