สมมติว่าเรามีตัวเลข x และ y สองตัว เราต้องตรวจสอบว่าหนึ่งในสองจำนวนนี้เป็นส่วนประกอบเสริมของ 1 ของอีกจำนวนหนึ่งหรือไม่ เราทุกคนรู้ดีว่าเลขฐานสองของเลข 1 กำลังพลิกบิตทั้งหมดจาก 0 เป็น 1 หรือ 1 เป็น 0
ดังนั้น หากอินพุตเท่ากับ x =9, y =6 เอาต์พุตจะเป็น True เนื่องจากการแสดงไบนารีคือ x =1001 และ y =0110 ซึ่งเป็นส่วนเติมเต็มของกันและกัน
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- z =x XOR y
- คืนค่า จริง เมื่อบิตทั้งหมดใน z ถูกตั้งค่า มิฉะนั้น จะเป็นเท็จ
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def all_one(n): if n == 0: return False; if ((n + 1) & n) == 0: return True return False def solve(x, y): return all_one(x ^ y) x = 9 y = 6 print(solve(x, y))
อินพุต
9, 6
ผลลัพธ์
True