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

ตรวจสอบว่าตัวเลขทั้งสองต่างกันที่ตำแหน่งบิตเดียวใน Python . หรือไม่


สมมติว่าเรามีตัวเลข 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