c#中是否有XNOR(逻辑双条件)运算符?

本文关键字:条件 运算符 是否 XNOR | 更新日期: 2023-09-27 18:05:36

我找不到一个XNOR运算符来提供这个真值表:

<>之前a b a XNOR b----------------T T T它是。F - FF - t之前

是否有特定的运算符?还是我需要用!(A^B)?

c#中是否有XNOR(逻辑双条件)运算符?

XNOR在布尔值上是相等的;使用A == B .

这很容易被忽略,因为相等性通常不适用于布尔值。在有些语言中,它不一定有效。例如,在C语言中,任何非零标量值都被视为真值,因此两个"真"值可以不相等。但是这个问题被标记为c#,我们可以说,它有很好的布尔值。

还请注意,这并不适用于位操作,您需要0x1234 XNOR 0x5678 == 0xFFFFBBB3(假设为32位)。为此,您需要从其他操作(如~(A^B))中构建。(注:~,不是!)

XOR = A或B,但不是A &(不能等于[!=])
因此,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 =非0/存在值)

Alt的例子正好相反(a || b) &&!(一个,,b)(异或)门

不行,你需要使用!(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)) //using a string in this example because binary or base 2 numnbers dont exists in language I have used
    next i
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 the base number value
endfunction r 

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

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