1. Gambaran keseluruhan
Dalam tutorial ringkas ini, kita akan belajar mengenai pengendali Java XOR . Kami akan mengkaji sedikit teori mengenai operasi XOR , dan kemudian kami akan melihat bagaimana melaksanakannya di Java.
2. Pengendali XOR
Mari kita mulakan dengan sedikit peringatan tentang semantik operasi XOR . The XOR operasi logik, atau eksklusif atau , mengambil masa dua operan boolean dan pulangan benar jika dan hanya jika operan adalah berbeza. Oleh itu, ia akan menjadi salah sekiranya kedua-dua operan tersebut mempunyai nilai yang sama.
Jadi, pengendali XOR dapat digunakan, misalnya, ketika kita harus memeriksa dua keadaan yang tidak dapat berlaku pada masa yang sama.
Mari kita pertimbangkan dua keadaan, A dan B. Kemudian jadual berikut menunjukkan kemungkinan nilai A XOR B :
Operasi A XOR B adalah bersamaan dengan (A DAN! B) ATAU (! A DAN B) . Tanda kurung telah disertakan untuk kejelasan, tetapi bersifat pilihan, kerana operator AND lebih diutamakan daripada operator OR .
3. Bagaimana Melakukannya di Java?
Sekarang, mari kita lihat bagaimana mengekspresikan operasi XOR di Java. Sudah tentu, kita mempunyai kemungkinan untuk menggunakan && dan || pengendali, tetapi ini mungkin sedikit rumit , seperti yang akan kita lihat.
Bayangkan kelas Kereta mempunyai dua atribut boolean : diesel dan manual . Dan sekarang, katakan kita ingin memberitahu sama ada kereta itu diesel atau manual, tetapi bukan kedua-duanya.
Mari periksa ini menggunakan && dan || pengendali:
Car car = Car.dieselAndManualCar(); boolean dieselXorManual = (car.isDiesel() && !car.isManual()) || (!car.isDiesel() && car.isManual());
Itu agak lama, terutamanya memandangkan kita mempunyai alternatif - pengendali Java XOR , yang diwakili oleh simbol ^ . Ini adalah pengendali sedikit demi sedikit - iaitu, operator membandingkan bit yang sepadan dengan dua nilai untuk mengembalikan hasilnya. Dalam kes XOR , jika dua bit dari kedudukan yang sama mempunyai nilai yang sama, bit yang dihasilkan adalah 0. Jika tidak, ia akan menjadi 1.
Jadi, bukannya pelaksanaan XOR yang membebankan , kita boleh menggunakan operator ^ secara langsung :
Car car = Car.dieselAndManualCar(); boolean dieselXorManual = car.isDiesel() ^ car.isManual();
Seboleh-bolehnya, pengendali ^ membolehkan kita lebih ringkas dalam menyatakan operasi XOR .
Akhirnya, perlu dinyatakan bahawa pengendali XOR , seperti pengendali bitwise yang lain, berfungsi dengan setiap jenis primitif. Sebagai contoh, mari kita pertimbangkan dua bilangan bulat 1 dan 3, yang masing-masing mewakili 00000001 dan 000000011. Kemudian, menggunakan operator XOR di antara mereka akan menghasilkan bilangan bulat 2:
assertThat(1 ^ 3).isEqualTo(2);
Hanya bit kedua yang berbeza dalam kedua-dua nombor tersebut, oleh itu hasil pengendali XOR pada bit ini akan menjadi 1. Semua bit lain adalah sama, oleh itu hasil XOR bitwise mereka adalah 0, memberi kita nilai akhir 00000010 - perwakilan binari bagi bilangan bulat 2.
4. Kesimpulan
Dalam artikel ini, kami mengetahui mengenai pengendali Java XOR . Kami melihat bahawa ia menawarkan cara ringkas untuk menyatakan operasi XOR .
Seperti biasa, kod penuh artikel boleh didapati di GitHub.