ในปัญหานี้ เราได้รับค่า n และ k งานของเราคือการหาค่าของ k-th bit ในตัวแทนบิตของ n
ตัวอย่างเพื่อเข้าใจปัญหา
Input: n = 5, k = 2 Output: 0
Binary of 5 = 0101, บิตที่ 2 จากขวา (LSB) คือ 0
วิธีการแก้ปัญหา
ใช้ bitwise AND ระหว่าง n กับ mask ที่มีบิตที่ k-th เป็น 1 (1 << (k-1)) แล้ว shift กลับมา
ตัวอย่างโค้ด
#include <iostream>
using namespace std;
void findKBitVal(int n, int k) {
cout << ((n & (1 << (k - 1))) >> (k - 1));
}
int main() {
int n = 29, k = 4;
cout << "The value of kth bit in binary of the number is ";
findKBitVal(n, k);
return 0;
}
ผลลัพธ์
The value of kth bit in binary of the number is 1
อธิบาย: 29 ใน binary คือ 11101, บิตที่ 4 จากขวาคือ 1