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

ค้นหาค่าของบิตที่ k ในการแทนค่าไบนารีใน C++


ในปัญหานี้ เราได้รับค่า n และ k สองค่า งานของเราคือ หาค่าของบิตที่ k ในการแทนค่าไบนารี .

มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน

Input : n= 5, k = 2
Output : 0

คำอธิบาย

Binary of 5 = 0101
Second LSB bit is 0.

แนวทางการแก้ปัญหา

วิธีแก้ปัญหาคือทำการแปลงค่าบิต AND ของการแปลงเลขฐานสองของตัวเลข N ด้วยตัวเลขที่ไม่ได้ตั้งค่าบิตทั้งหมดและตั้งค่าหนึ่งบิตซึ่งอยู่ที่ตำแหน่ง k เพื่อให้ได้ผลลัพธ์

ตัวอย่าง

โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา

#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