私はC#が初めてで、この真理値表を提供するXNOR演算子を見つけることができませんでした:
aba XNOR b ---------------- TTT TFF FTF FFT
これには特定の演算子がありますか?または、!(A^B) を使用する必要がありますか?
私はC#が初めてで、この真理値表を提供するXNOR演算子を見つけることができませんでした:
aba XNOR b ---------------- TTT TFF FTF FFT
これには特定の演算子がありますか?または、!(A^B) を使用する必要がありますか?
XNOR は単純にブール値の等価性です。使用してA == B
ください。
等式は一般にブール値には適用されないため、これは見落としがちです。また、必ずしも機能するとは限らない言語もあります。たとえば、C では、ゼロ以外のスカラー値はすべて真として扱われるため、2 つの「真」の値が等しくない場合があります。しかし、質問には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 / there is a value )。
altの例は、逆(a || b)&&!(a && b)(XOR)ゲートです。
いいえ、使用する必要があります!(A^B)
演算子のオーバーロードを使用して独自の XNOR を作成できると思いますが。