誰かがこの演算子を良い例で説明できますか?
私はこの演算子が何であるかを知っています。私は実際の例を意味します。
誰かがこの演算子を良い例で説明できますか?
私はこの演算子が何であるかを知っています。私は実際の例を意味します。
論理演算の実装ですexclusive disjunction
http://en.wikipedia.org/wiki/Exclusive_or
排他的論理和は、ビット単位の演算によく使用されます。例:
- 1 xor 1 = 0
- 1 xor 0 = 1
- 0 xor 1 = 1
- 0 xor 0 = 0
- 1110 xor 1001 = 0111(これはキャリーなしの加算と同等です)
上記のように、排他的論理和は2を法とする加算と同じであるため、2つのnビット文字列のビット単位の排他的論理和はベクトル空間(Z / 2Z)^4の標準の加算ベクトルと同じです。
コンピュータサイエンスでは、排他的論理和にはいくつかの用途があります。
- 2ビットが等しくないかどうかを示します。
- これはオプションのビットフリッパーです(決定入力はデータ入力を反転するかどうかを選択します)。
- 奇数の1ビットがあるかどうかを示します(奇数の変数が真の場合は真です)。
(そして他の多くの用途)
たとえば、次のようになります。
var result = a ^ b;
result a b
--------------------------------
true true false
true false true
false true true
false false false
「排他的論理和」が真であると評価するには、1つのオペランドのみが真である必要があります。
foo ^ bar
と同等です
(foo && !bar) || (!foo && bar)
XORを使用する場合、比較されたステートメントの1つだけが真である場合にのみ、ステートメントは真と評価されます。それで:
bool foo = true;
bool bar = false;
if (foo ^ bar) { bar = true; // this evaluates to true }
if (foo ^ bar) { // This evaluates to false, since both statements are now true. }
プログラミング言語のリファレンスは、演算子の定義を探すのに常に最適な場所です。
この場合、MSDNはC#演算子の最も適切な定義です。
ドキュメントによると:
二項^演算子は、整数型とブール値に対して事前定義されています。整数型の場合、^はそのオペランドのビット単位の排他的論理和を計算します。ブールオペランドの場合、^はそのオペランドの論理排他的論理和を計算します。つまり、そのオペランドの1つだけが真である場合にのみ、結果は真になります。
例もリストされています。
XORは一般的なブール演算子であり、C#ではXORに固有のものはありません。ブール代数について少し読んで、1ビットで何に使用されるかを学び、2つの数値または文字aとbを使用して(a XOR b)XORbを実行すると何が得られるかを確認することをお勧めします。