JavaのXORオペレーター

1. 概要

この短いチュートリアルでは、Java _XOR_演算子について学習します。 _XOR_操作についての理論を少し説明してから、それらをJavaで実装する方法を見ていきます。

2. _XOR_演算子

_XOR_操作のセマンティクスを少し思い出してみましょう。 * _XOR_論理演算、または_exclusive or_は、2つのブールオペランドを取り、オペランドが異なる場合にのみtrueを返します。したがって、2つのオペランドの値が同じ場合はfalseを返します。
そのため、たとえば、同時に真ではない2つの条件をチェックする必要がある場合に、_XOR_演算子を使用できます。
_A_と_B._の2つの条件を考えてみましょう。その後、次の表に_A XOR B_の可能な値を示します。
link:/uploads/xor_operator_table-1.png%201048w []
  • A XOR B_操作は(A AND!B)OR(!A AND B)_と同等です。*括弧は明確にするために含まれていますが、_AND_演算子が_OR_演算子より優先されるため、オプションです。

3. Javaで行う方法

それでは、Javaで_XOR_操作を表現する方法を見てみましょう。 *もちろん、_を使用する可能性があります
2つの_boolean_属性を持つCar_クラスを想像してください:_diesel_と_manual_。 そして今、車がディーゼルか手動のどちらかであるかどうかを判断したいとしましょう。両方ではありません。
_を使用してこれを確認しましょう
Car car = Car.dieselAndManualCar();
boolean dieselXorManual = (car.isDiesel() && !car.isManual()) || (!car.isDiesel() && car.isManual());
*これは少し長いです。特に、_ ^ symbol_で表されるJava _XOR_演算子の代替手段があることを考えると、これはlink:/java-bitwise-operators[bitwise operator]です。 -つまり、結果を返すために2つの値の一致するビットを比較する演算子。 _XOR_の場合、同じ位置の2つのビットが同じ値を持つ場合、結果のビットは0になります。 それ以外の場合、1になります。
したがって、面倒な_XOR_実装の代わりに、_ ^ _演算子を直接使用できます。
Car car = Car.dieselAndManualCar();
boolean dieselXorManual = car.isDiesel() ^ car.isManual();
簡単に言うと、_ ^ _演算子を使用すると、_XOR_操作をより簡潔に表現できます。
*最後に、他のビット演算子と同様に、__ XOR __operatorはすべてのプリミティブ型で機能することに注意する価値があります。たとえば、2つの整数1と3を考えてみましょう。バイナリ表現はそれぞれ00000001と000000011です。 次に、それらの間に_XOR_演算子を使用すると、整数2になります。
assertThat(1 ^ 3).isEqualTo(2);
これらの2つの数値では2番目のビットのみが異なるため、このビットの_XOR_演算子の結果は1になります。 他のすべてのビットは同一であるため、ビット単位の_XOR_結果は0であり、最終値として00000010 –整数2のバイナリ表現が得られます。

4. 結論

この記事では、Java _XOR_演算子について学びました。 __XOR __operationsを表現する簡潔な方法を提供することがわかりました。
いつものように、記事の完全なコードはhttps://github.com/eugenp/tutorials/tree/master/core-java-modules/core-java-lang-operators[GitHubで]にあります。