Operator XOR di Jawa

1. Ikhtisar

Dalam tutorial singkat ini, kita akan belajar tentang operator Java XOR . Kita akan membahas sedikit teori tentang operasi XOR , dan kemudian kita akan melihat bagaimana menerapkannya di Java.

2. Operator XOR

Mari kita mulai dengan sedikit pengingat tentang semantik operasi XOR . The XOR operasi logis, atau eksklusif atau , mengambil dua operan boolean dan kembali benar jika dan hanya jika operan berbeda. Jadi, mengembalikan nilai salah jika kedua operan memiliki nilai yang sama.

Jadi, operator XOR bisa digunakan, misalnya saat kita harus memeriksa dua kondisi yang tidak bisa benar pada saat bersamaan.

Mari kita pertimbangkan dua kondisi, A dan B. Kemudian tabel berikut menunjukkan nilai yang mungkin dari A XOR B :

Operasi A XOR B sama dengan (A AND! B) OR (! A AND B) . Tanda kurung telah disertakan untuk kejelasan, tetapi bersifat opsional, karena operator DAN lebih diutamakan daripada operator ATAU .

3. Bagaimana Melakukannya di Java?

Sekarang, mari kita lihat bagaimana mengekspresikan operasi XOR di Java. Tentu saja, kami memiliki kemungkinan untuk menggunakan && dan || operator, tetapi ini bisa sedikit bertele-tele , seperti yang akan kita lihat.

Bayangkan sebuah kelas mobil memiliki dua atribut boolean : diesel dan manual . Dan sekarang, katakanlah kita ingin memberi tahu apakah mobil itu diesel atau manual, tapi tidak keduanya.

Mari kita periksa ini menggunakan && dan || operator:

Car car = Car.dieselAndManualCar(); boolean dieselXorManual = (car.isDiesel() && !car.isManual()) || (!car.isDiesel() && car.isManual());

Itu agak lama, terutama mengingat kita memiliki alternatif - operator Java XOR , yang diwakili oleh simbol ^ . Ini adalah operator bitwise - yaitu, operator yang membandingkan bit yang cocok dari dua nilai untuk mengembalikan hasil. Dalam kasus XOR , jika dua bit dari posisi yang sama memiliki nilai yang sama, bit yang dihasilkan akan menjadi 0. Jika tidak, akan menjadi 1.

Jadi, alih-alih implementasi XOR yang rumit , kita dapat langsung menggunakan operator ^ :

Car car = Car.dieselAndManualCar(); boolean dieselXorManual = car.isDiesel() ^ car.isManual();

Seperti yang bisa kita lakukan, operator ^ memungkinkan kita untuk lebih ringkas dalam mengekspresikan operasi XOR .

Akhirnya, perlu disebutkan bahwa operator XOR , seperti operator bitwise lainnya, bekerja dengan setiap tipe primitif. Misalnya, mari kita pertimbangkan dua bilangan bulat 1 dan 3, yang representasi binernya masing-masing adalah 00000001 dan 000000011. Kemudian, menggunakan operator XOR di antara keduanya akan menghasilkan bilangan bulat 2:

assertThat(1 ^ 3).isEqualTo(2);

Hanya bit kedua yang berbeda pada kedua bilangan tersebut, oleh karena itu hasil dari operator XOR pada bit ini adalah 1. Semua bit lainnya identik, sehingga hasil XOR bitwise mereka adalah 0, memberi kita nilai akhir 00000010 - representasi biner dari bilangan bulat 2.

4. Kesimpulan

Pada artikel ini, kami belajar tentang operator Java XOR . Kami melihatnya menawarkan cara ringkas untuk mengekspresikan operasi XOR .

Seperti biasa, kode lengkap artikel dapat ditemukan di GitHub.