โจทย์: กำหนดเลข x และ y ตรวจสอบว่าต่างกันที่ Bit เดียว (One-bit position) หรือไม่
ตัวอย่าง
x = 25 (11001), y = 17 (10001) → True (ต่างที่ bit เดียว)
อัลกอริทึม
- z = x XOR y (Bit ที่ต่างกันจะเป็น 1)
- นับ Set Bits ใน z (Brian Kernighan's Algorithm หรือ Bit Count)
- ถ้าจำนวน Set Bits = 1 → True, มิฉะนั้น False
โค้ดตัวอย่าง
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))
Input / Output
Input: 25, 17 Output: True