ในปัญหานี้ เราได้รับตัวเลขสองตัว n และ k งานของเราคือพิมพ์ k th บิตที่มีนัยสำคัญน้อยที่สุดของจำนวน n.
มาดูตัวอย่างทำความเข้าใจปัญหากัน
Input: n = 12 , k = 3 Output 1 Explanation: Let’s see the binary representation of n: 12 = 1100
ตอนนี้ บิตที่มีนัยสำคัญน้อยที่สุดที่ 3 คือ 1
เพื่อแก้ปัญหานี้ เราจะใช้เลขฐานสองบิตของตัวเลข และให้ผลลัพธ์เป็นบิตที่ k ของตัวเลข สำหรับสิ่งนี้ เราจะใช้การเลื่อนเลขฐานสองของตัวเลขและเลื่อนตัวเลขไปทางซ้าย (k-1) ครั้ง ตอนนี้กำลังดำเนินการสิ้นสุดของตัวเลขที่เลื่อนและหมายเลขเดิมซึ่งจะให้ค่าของบิต kth
ตัวอย่าง
โค้ดด้านล่างจะแสดงการใช้งานโซลูชันของเรา
#include <bits/stdc++.h> using namespace std; int main() { int N = 12, K = 3; cout<<K<<"th significant bit of "<<N<<" is : "; bool kthLSB = (N & (1 << (K-1))); cout<<kthLSB; return 0; }
ผลลัพธ์
3th significant bit of 12 is : 1