私はC#が初めてなので、この真理値表を提供する [〜#〜] xnor [〜#〜] 演算子が見つかりませんでした。
aba XNOR b ---------------- TTT TFF FTF FFT
これに特定の演算子はありますか?または、!(A ^ B)を使用する必要がありますか?
XNORはブール値の単なる平等です。 _A == B
_を使用します。
平等は一般的にブール値に適用されないため、これは見落としやすいものです。また、必ずしも機能しない言語もあります。たとえば、Cでは、ゼロ以外のスカラー値はすべてtrueとして扱われるため、2つの「true」値が等しくない可能性があります。しかし、質問には 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)を返しますが、2番目の例はtrueを返します(a [value?]およびb [value?]の値は同じブール値trueを返します(value = not 0 /値があります) )
altの例は、単に逆(a || b)&&!(a && b)(XOR)ゲートです
いいえ、!(A^B)
を使用する必要があります
ただし、演算子のオーバーロードを使用して独自のXNORを作成できると思います。