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

ตรวจสอบว่า Bit ที่ตำแหน่ง k เป็น Set หรือ Unset ด้วย Python

โจทย์: กำหนดเลข n และตำแหน่ง k (นับจากขวา LSB = 1) ตรวจสอบว่า Bit ตำแหน่ง k เป็น 1 (Set) หรือ 0 (Unset)

ตัวอย่าง

n = 18 (10010), k = 2 → Set (Bit ตำแหน่ง 2 จากขวาคือ 1)

อัลกอริทึม

  1. Shift Right n ไป (k-1) ตำแหน่ง → Bit ตำแหน่ง k มาอยู่ LSB
  2. 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