在 C # 中是否有 XnOR (逻辑双如言)操作符?

我是 C # 的新手,找不到 XNOR操作员来提供这个真值表:

a  b    a XNOR b
----------------
T  T       T
T  F       F
F  T       F
F  F       T

是否有专门的操作员? 或者我需要使用! (A ^ B) ?

71103 次浏览

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

不过我想你可以用运算符重载来制作你自己的异或。

XNOR 只是布尔值上的等式; 使用 A == B

这一点很容易忽略,因为等式通常不适用于布尔型。有些语言不一定适用。例如,在 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 [值? ]的值返回相同的布尔值 true (value = not 0/有一个值)

Alt 的例子就是反向的(a | | b) & & ! (a & & b)(XOR)门

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

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

在整个讨论中,有几个位运算我不认为是常规的。即使在 c 中,在字符串的末尾附加或插入,在标准 IO 和数学库中都很常见。这就是我认为问题出在 not 和 Xnor 身上的地方,它们不熟悉 python,但我建议使用下面的示例

函数 BitwiseNor (作为整数) 我是绳子 L = str (a) 就像绳子一样 对于 i = len (l)到0 S = (str (i) + “ =”+ Bin (i))//在本例中使用字符串,因为在我使用的语言中不存在二进制或基数2 接下来 末端函数 s

函数 BitwiseXnor (a 作为整数,b 作为整数) R 作为整数 D 为整数 作为字符串 C = str (BitwiseOr (a,b)) R = (val (c,2))//这个转换中的数字是基数值 末端函数 r