ปัญหา
ให้ตัวเลข 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