XOR Operator ใน Java

1. ภาพรวม

ในการกวดวิชาสั้น ๆ นี้เรากำลังจะได้เรียนรู้เกี่ยวกับ Java แฮคเกอร์ผู้ประกอบการ เราจะพูดถึงทฤษฎีเล็กน้อยเกี่ยวกับการดำเนินการXORจากนั้นเราจะดูวิธีการนำไปใช้ใน Java

2. ตัวดำเนินการXOR

เริ่มต้นด้วยการแจ้งเตือนเล็กน้อยเกี่ยวกับความหมายของการดำเนินการXOR การดำเนินการทางตรรกะXORหรือเอกสิทธิ์เฉพาะบุคคลหรือใช้ตัวถูกดำเนินการแบบบูลีนสองตัวและส่งคืนค่าจริงในกรณีที่ตัวถูกดำเนินการต่างกัน ดังนั้นจึงส่งคืนเท็จหากตัวถูกดำเนินการทั้งสองมีค่าเหมือนกัน

ดังนั้นจึงสามารถใช้ตัวดำเนินการXORได้เช่นเมื่อเราต้องตรวจสอบเงื่อนไขสองเงื่อนไขที่ไม่สามารถเป็นจริงได้ในเวลาเดียวกัน

ลองพิจารณาสองเงื่อนไขAและBจากนั้นตารางต่อไปนี้แสดงค่าที่เป็นไปได้ของA XOR B :

XOR Bการดำเนินงานเท่ากับ(A และ! B) OR (! A และ B) วงเล็บถูกรวมไว้เพื่อความชัดเจน แต่เป็นทางเลือกเนื่องจากตัวดำเนินการANDมีความสำคัญเหนือโอเปอเรเตอร์OR

3. จะทำอย่างไรใน Java?

ตอนนี้เรามาดูวิธีแสดงการดำเนินการXORใน Java แน่นอนเรามีความเป็นไปได้ที่จะใช้เครื่องหมาย&&และ|| โอเปอเรเตอร์ แต่สิ่งนี้อาจเป็นเรื่องยากอย่างที่เราจะเห็น

ลองนึกภาพรถชั้นมีสองแบบบูแอตทริบิวต์: ดีเซลและคู่มือ ตอนนี้สมมติว่าเราต้องการบอกว่ารถคันนั้นเป็นดีเซลหรือเกียร์ธรรมดา แต่ไม่ใช่ทั้งสองอย่าง

ลองตรวจสอบสิ่งนี้โดยใช้&&และ|| ตัวดำเนินการ:

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

นั่นเป็นบิตนานโดยเฉพาะการพิจารณาว่าเรามีทางเลือก - ชวาXORประกอบการแสดงโดย^ สัญลักษณ์ เป็นตัวดำเนินการระดับบิตนั่นคือตัวดำเนินการเปรียบเทียบบิตที่ตรงกันของสองค่าเพื่อส่งกลับผลลัพธ์ ในกรณีXORถ้าสองบิตในตำแหน่งเดียวกันมีค่าเท่ากันบิตที่ได้จะเป็น 0 มิฉะนั้นจะเป็น 1

ดังนั้นแทนที่จะใช้XOR ที่ยุ่งยากเราสามารถใช้ตัวดำเนินการ^ได้โดยตรง:

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

ในขณะที่เราสามารถกระจ้อยร่อยตัวดำเนินการ^ช่วยให้เราสามารถแสดงการดำเนินการXORได้อย่างรัดกุม

สุดท้ายนี้ควรค่าแก่การกล่าวถึงว่าตัวดำเนินการXORเช่นเดียวกับตัวดำเนินการระดับบิตอื่น ๆ ทำงานได้กับทุกประเภทดั้งเดิม ตัวอย่างเช่นลองพิจารณาจำนวนเต็ม 1 และ 3 สองจำนวนซึ่งการแทนค่าไบนารีคือ 00000001 และ 000000011 ตามลำดับ จากนั้นการใช้ตัวดำเนินการXORระหว่างกันจะทำให้ได้จำนวนเต็ม 2:

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

เฉพาะบิตที่สองเท่านั้นที่แตกต่างกันในสองจำนวนนี้ดังนั้นผลลัพธ์ของตัวดำเนินการXORในบิตนี้จะเป็น 1 บิตอื่น ๆ ทั้งหมดเหมือนกันดังนั้นผลลัพธ์XOR ระดับบิตของพวกเขาจึงเป็น 0 ทำให้เรามีค่าสุดท้ายเป็น 00000010 - การแทนค่าฐานสอง ของจำนวนเต็ม 2

4. สรุป

ในบทความนี้เราได้เรียนรู้เกี่ยวกับ Java แฮคเกอร์ผู้ประกอบการ เราเห็นว่ามีวิธีที่กระชับในการแสดงการดำเนินการXOR

ตามปกติโค้ดทั้งหมดของบทความสามารถพบได้ใน GitHub