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

ตรวจสอบว่า บิตที่ k (นับจากขวา) เป็น 1 หรือไม่ ใน Python


ปัญหา

ให้ตัวเลข n และตำแหน่ง k (นับจากขวา เริ่มที่ 1) ต้องการทราบว่าบิตที่ k เป็น 1 (set) หรือ 0

หลักการ

ใช้การเลื่อนบิต (>>) และ AND กับ 1: (n >> (k-1)) & 1

ตัวอย่าง

n = 23 (binary: 10111), k = 3 → บิตที่ 3 จากขวาคือ 1 → True

โค้ดตัวอย่าง

def solve(n, k):
    return ((n >> (k - 1)) & 1) == 1

n = 23
k = 3
print(solve(n, k))  # True

อินพุต / เอาต์พุต

Input:  23, 3
Output: True