โจทย์: กำหนดเลข n และตำแหน่ง k (นับจากขวา LSB = 1) ตรวจสอบว่า Bit ตำแหน่ง k เป็น 1 (Set) หรือ 0 (Unset)
ตัวอย่าง
n = 18 (10010), k = 2 → Set (Bit ตำแหน่ง 2 จากขวาคือ 1)
อัลกอริทึม
- Shift Right n ไป (k-1) ตำแหน่ง → Bit ตำแหน่ง k มาอยู่ LSB
- AND กับ 1: ถ้าเป็น 1 → Set, มิฉะนั้น Unset
โค้ดตัวอย่าง
def solve(n, k):
temp = n >> (k - 1)
if temp & 1:
return "Set"
return "Unset"
n = 18
k = 2
print(solve(n, k))
Input / Output
Input: 18, 2 Output: Set