สมมติว่าเรามีตัวเลข x และ y สองตัว เราต้องตรวจสอบว่าตัวเลขสองตัวนี้ต่างกันที่ตำแหน่ง 1 บิตหรือไม่
ดังนั้น หากอินพุตเท่ากับ x =25 y =17 เอาต์พุตจะเป็น True เพราะ x =11001 ในรูปแบบไบนารี และ y =10001 ตำแหน่งบิตเดียวจะแตกต่างกัน
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- z =x XOR y
- ถ้าจำนวนบิตเซ็ตใน z คือ 1 แล้ว
- คืนค่า True
- คืนค่าเท็จ
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
โค้ดตัวอย่าง
def bit_count(n): count = 0 while n: count += n & 1 n >>= 1 return count def solve(x, y): return bit_count(x ^ y) == 1 x = 25 y = 17 print(solve(x, y))
อินพุต
25,17
ผลลัพธ์
True