157

私はC#が初めてで、この真理値表を提供するXNOR演算子を見つけることができませんでした:

aba XNOR b
----------------
TTT
TFF
FTF
FFT

これには特定の演算子がありますか?または、!(A^B) を使用する必要がありますか?

4

4 に答える 4

284

XNOR は単純にブール値の等価性です。使用してA == Bください。

等式は一般にブール値には適用されないため、これは見落としがちです。また、必ずしも機能するとは限らない言語もあります。たとえば、C では、ゼロ以外のスカラー値はすべて真として扱われるため、2 つの「真」の値が等しくない場合があります。しかし、質問にはというタグが付けられており、行儀の良いブール値を持っています。

また、これは必要に応じてビット単位の操作に一般化されないことに注意してください0x1234 XNOR 0x5678 == 0xFFFFBBB3(32 ビットを想定)。そのためには、 などの他の操作から構築する必要があります~(A^B)。(注: ~、 ではありません!。)

于 2011-08-14T00:22:23.920 に答える
6

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)ゲートです。

于 2012-01-28T20:48:00.897 に答える
3

いいえ、使用する必要があります!(A^B)

演算子のオーバーロードを使用して独自の XNOR を作成できると思いますが。

于 2011-08-14T00:16:29.150 に答える