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