কম্পিউটার টিউটোরিয়াল

C++-এ একটি সংখ্যার K-তম সেট বিটের পজিশন


এই সমস্যাতে, দুটি পূর্ণসংখ্যা N এবং K দেওয়া আছে। আমাদের কাজ হলো সংখ্যা N-এর Kth সেট বিটের ইনডেক্স বের করা, ডান পাশ থেকে গণনা করে।

সেট বিটগুলো সংখ্যার বাইনারি রিপ্রেজেন্টেশন থেকে চেক করা হয়। বাইনারি রিপ্রেজেন্টেশনে ইনডেক্সিং ডান দিক থেকে ০ থেকে শুরু হয় এবং বাম দিকের দিকে এগিয়ে।

উদাহরণ - বাইনারি নম্বর '011101'-এ, ডান থেকে ইনডেক্স ০-তে ১ আছে, ইনডেক্স ১-তে ০, এবং সারি।

উদাহরণ:

ইনপুট - N = 6, K = 2

আউটপুট - 2

ব্যাখ্যা - 6-এর বাইনারি রিপ্রেজেন্টেশন 0110। ডান থেকে ২য় সেট বিট ইনডেক্স ২-তে।

সমাধানের জন্য, আমরা চেক করব বর্তমান বিট সেট কিনা, যদি সেট হয় তবে K-এর মান কমিয়ে দিব। প্রতিটি চেকের পর সংখ্যাকে ১ দিয়ে শিফ্ট করব, এতে পরবর্তী বিট मिलবে, এবং শিফ্ট কাউন্ট মেইনটেইন করব। একবার K ০ হলে, আমরা শিফ্ট কাউন্ট প্রিন্ট করব।

উদাহরণ

সমাধানের প্রোগ্রাম:

#include <iostream> 
using namespace std; 

int FindIndexKthBit(int N, int K) {
    int index = 0;
    while (N) {
        if (N & 1)
            K--;
        if (!K)
            return index;
        index++;
        N = N >> 1;
    }
    return -1;
}

int main() {
    int N = 12, K = 2;
    cout << "The " << K << "th set bit of the number " << N << " is at index : \t";
    int index = FindIndexKthBit(N, K);
    if (index != -1)
        cout << index;
    else
        cout << "\nsorry no index found";
    return 0;
}

আউটপুট

The 2th set bit of the number 12 is at index : 3

  1. C++-এ সেটে রিফ্লেক্সিভ রিলেশন সংখ্যা বের করুন

  2. C++-এ ডানপাশের ভিন্ন বিটের পজিশন

  3. C++-এ ডানপাশের সেট বিটের পজিশন

  4. সি++ প্রোগ্রাম: সংখ্যার সবচেয়ে významপূর্ণ সেট বিট (MSB) নির্ণয়