私は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では、ゼロ以外のスカラー値はすべてtrueとして扱われるため、2つの「true」値は等しくない場合があります。しかし、質問はタグ付けされましたc#、それは私たちが言うには、行儀の良いブール値を持っています。
これは、必要な場合0x1234 XNOR 0x5678 == 0xFFFFBBB3(32ビットを想定)、ビット単位の演算に一般化されないことにも注意してください。そのためには、などの他の操作から構築する必要があります~(A^B)。(注:~ではなく!)
!演算子を使用してintを「適切に動作する」ブール値に変換できます!a==!b。
!!(これは2つの論理「not」演算子です)は、スカラー値を0またはに正規化します1。
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を返します(値= 0 /値がありません) )
altの例は、単に反転した(a || b)&&!(a && b)(XOR)ゲートです。
いいえ、使用する必要があります !(A^B)
演算子のオーバーロードを使用して独自のXNORを作成できると思いますが。
===XNORの演算子を使用できます。変換aしbてブールに変換する必要があるだけです。
if (!!a === !!b) {...}
===演算子はありません
===非強制演算子はJavaScript !!で、評価の値の前のdouble はc#でも無効です
==、ブールオペランドとしてより一般的に知られています...