C#にXNOR(論理二条件)演算子はありますか?


136

私はC#を使い始めたばかりで、この真理値表を提供するXNOR演算子が見つかりませんでした。

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

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


94
この演算子は==、ブールオペランドとしてより一般的に知られています...
Magnus Hoff

@マグナスホフ:素敵なポイント!
sll

24
「木に木が見えない」という言葉は、ここでは非常にふさわしいと思います。私たちは全員ここに1、2回来たので投票します;)
消費者

1
多分OP iz l33t k!dは素晴らしいシェルコードを書きたくて、どういうわけか比較操作を隠す必要があります。それは可能性です...
Kerrek SB '08 / 08/14

4
申し訳ありませんが、Kerrek、私はその群衆からではありません。そして、消費者はかなりここにいます-)
Trailmax

回答:


250

XNORは単にブール値の等価です。使用しますA == B

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

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


6
Cでは、!演算子を使用してintを「適切に動作する」ブール値に変換できます!a==!b
ivan_pozdeev 2014

2
@ivan_pozdeev And !!(これは2つの論理「not」演算子です)は、スカラー値を0またはに正規化します1
キース・トンプソン、

5

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


3

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

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


1
これはビット単位ではなく、論理的である
SLL

私はポスターが彼が彼の質問にそれを含めたのでそれを知っていると思います。
グリフィン

4
@sllevあなたは私にほとんどを得た、私はそれを再確認しなければならなかった。C#では、ブール演算を行うと^は論理的です。整数型で操作する場合、ビット単位です。msdn.microsoft.com/en-us/library/zkacc7k1.aspxを
Trailmax

@trailmax:クールなもの、これを指摘してくれてありがとう!本当に悪魔が詳しく!
sll

-6

===XNORの演算子を使用できます。変換abてブールに変換する必要があるだけです。

if (!!a === !!b) {...}

1
C#のみに===演算子はありません
Trailmax 2017年

この答えはどれも正しくありません。===非強制演算子はJavaScript !!で、評価の値の前のdouble はc#でも無効です
Remi

すでに述べたように、c#には3つの等号演算子はありません。
cramopy

===はC#の演算子ではありません...(===)はJavaScriptで使用されます。
Darkcoder
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.