10

誰かがこの演算子を良い例で説明できますか?

私はこの演算子が何であるかを知っています。私は実際の例を意味します。

4

6 に答える 6

18

論理演算の実装です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ビットがあるかどうかを示します(奇数の変数が真の場合は真です)。

(そして他の多くの用途)

于 2011-06-21T08:24:46.133 に答える
12

たとえば、次のようになります。

var result = a ^ b;

result          a        b
--------------------------------
true            true    false
true            false   true
false           true    true
false           false   false
于 2011-06-21T08:27:42.680 に答える
6

「排他的論理和」が真であると評価するには、1つのオペランドのみが真である必要があります。

foo ^ bar

と同等です

(foo && !bar) || (!foo && bar)
于 2011-06-21T08:32:45.740 に答える
2

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. }
于 2011-06-21T08:24:47.237 に答える
1

プログラミング言語のリファレンスは、演算子の定義を探すのに常に最適な場所です。

この場合、MSDNはC#演算子の最も適切な定義です。

ドキュメントによると:

二項^演算子は、整数型とブール値に対して事前定義されています。整数型の場合、^はそのオペランドのビット単位の排他的論理和を計算します。ブールオペランドの場合、^はそのオペランドの論理排他的論理和を計算します。つまり、そのオペランドの1つだけが真である場合にのみ、結果は真になります。

例もリストされています。

于 2011-06-21T08:27:29.547 に答える
1

XORは一般的なブール演算子であり、C#ではXORに固有のものはありません。ブール代数について少し読んで、1ビットで何に使用されるかを学び、2つの数値または文字aとbを使用して(a XOR b)XORbを実行すると何が得られるかを確認することをお勧めします。

于 2011-06-21T08:27:57.287 に答える