tra*_*max 126 c# boolean boolean-operations
我是C#的新手,无法找到XNOR运算符来提供这个真值表:
a b a XNOR b ---------------- T T T T F F F T F F F T
这是否有特定的运营商?或者我需要使用!(A ^ B)?
Kei*_*son 233
XNOR只是对布尔的平等; 用A == B.
这是一件容易错过的事情,因为平等并不常见于布尔人.并且有些语言不一定有效.例如,在C中,任何非零标量值都被视为true,因此两个"true"值可能不相等.但这个问题被标记为c#,我们应该说,这是一个表现良好的布尔.
另请注意,这并不适用于您想要的位运算0x1234 XNOR 0x5678 == 0xFFFFBBB3(假设为32位).为此,您需要从其他操作中构建,例如~(A^B).(注意:~不是!.)
XOR = A或B,但不是A&B或都不是(不能等于[!=])
,因此XNOR是确切的对数,可以很容易地用==或===表示。
但是,非布尔型情况会出现问题,例如以下示例:
a = 5
b = 1
if (a == b){
...
}
Run Code Online (Sandbox Code Playgroud)
相反,使用以下命令:
a = 5
b = 1
if((a && b) || (!a && !b)){
...
}
Run Code Online (Sandbox Code Playgroud)
要么
if(!(a || b) && (a && b)){
...
}
Run Code Online (Sandbox Code Playgroud)
第一个示例将返回false(5!= 1),但是第二个示例将返回true(a [value?]和b [value?]的值返回相同的布尔值,即true(值=不为0 /有一个值) )
alt示例只是反向(a || b)&&!(a && b)(XOR)门
| 归档时间: |
|
| 查看次数: |
48330 次 |
| 最近记录: |