Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ตรวจสอบว่าเลขสองตัวต่างกันที่ Bit เดียวเท่านั้นด้วย Python

โจทย์: กำหนดเลข x และ y ตรวจสอบว่าต่างกันที่ Bit เดียว (One-bit position) หรือไม่

ตัวอย่าง

x = 25 (11001), y = 17 (10001) → True (ต่างที่ bit เดียว)

อัลกอริทึม

  1. z = x XOR y (Bit ที่ต่างกันจะเป็น 1)
  2. นับ Set Bits ใน z (Brian Kernighan's Algorithm หรือ Bit Count)
  3. ถ้าจำนวน 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