c#中是否有XNOR(逻辑双条件)运算符?
本文关键字:条件 运算符 是否 XNOR | 更新日期: 2023-09-27 18:05:36
我找不到一个XNOR运算符来提供这个真值表:
<>之前a b a XNOR b----------------T T T它是。F - FF - t之前是否有特定的运算符?还是我需要用!(A^B)?
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可以使用===
运算符。您只需要将a
和b
转换为bool。
if (!!a === !!b) {...}