Cho một số n và một giá trị k. Ta cần kiểm tra xem bit thứ k (đếm từ phải sang trái, bit cuối cùng là vị trí 1) của n có bằng 1 hay không.
Ví dụ: n = 23 (nhị phân 10111), k = 3 → bit thứ 3 từ phải là 1 → trả về True.
Giải thuật
- Dịch phải
nsebanyakk-1lần:temp = n >> (k - 1). - Kiểm tra bit thấp nhất của
tempbằng phépANDvới 1:temp & 1. - Nếu kết quả là 1 trả về
True, ngược lạiFalse.
Mã ví dụ
def solve(n, k):
temp = n >> (k - 1)
if temp & 1:
return True
return False
n = 23
k = 3
print(solve(n, k))
Đầu vào
23, 3
Đầu ra
True