私は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#でも無効です
==
、ブールオペランドとしてより一般的に知られています...