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

หาค่า k-th bit ในตัวแทนบิตของตัวเลขใน C++

ในปัญหานี้ เราได้รับค่า 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