[C#] C #에 XNOR (논리 이중 조건부) 연산자가 있습니까?
저는 C #을 처음 사용하고 XNOR 연산자를 사용하여이 진리표를 제공 할 수 없습니다 .
아바 XNOR b ---------------- TTT TFF FTF FFT
이에 대한 특정 연산자가 있습니까? 아니면! (A ^ B)를 사용해야합니까?
답변
XNOR은 부울의 평등입니다. 사용하십시오 A == B
.
평등은 일반적으로 부울에 적용되지 않으므로 쉽게 놓칠 수 있습니다. 그리고 반드시 작동하지 않을 언어가 있습니다. 예를 들어, C에서 0이 아닌 스칼라 값은 true로 처리되므로 두 개의 “true”값이 같지 않을 수 있습니다. 그러나 질문은 태그되었습니다씨#우리는 잘 행동하는 부울을 가지고 있습니다.
또한 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 [value?]의 값은 동일한 부울, true (값 = 0이 아님 / 값이 있음)를 반환합니다 )
대체 예는 단지 역전 된 (a || b) &&! (a && b) (XOR) 게이트입니다.
답변
아니요, 사용해야합니다 !(A^B)
비록 연산자 오버로딩을 사용하여 자신의 XNOR을 만들 수 있다고 가정합니다.
답변
===
XNOR 에는 연산자를 사용할 수 있습니다 . 그냥 변환 a
하고 b
부울 해야합니다 .
if (!!a === !!b) {...}