কম্পিউটার

C++ এ একটি সংখ্যায় K-th সেট বিটের অবস্থান


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

সংখ্যার বাইনারি উপস্থাপনা থেকে সেট বিটগুলি পরীক্ষা করা হয়। বাইনারি উপস্থাপনায় ইন্ডেক্সিং ডান দিক থেকে সূচক 0 থেকে শুরু হয় এবং বাম দিকে প্রচারিত হয়।

উদাহরণ − বাইনারি সংখ্যা '011101'-এ, ডান দিক থেকে 0 সূচকে আমাদের 1 আছে, সূচক 1 এ ডান থেকে আমাদের 0 আছে, ইত্যাদি।

এখন, সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক

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

আউটপুট − 2

ব্যাখ্যা − 6-এর বাইনারি উপস্থাপনা হল 0110৷ ডান দিক থেকে 2য় সেট বিটটি সূচক 2 এ থাকবে৷

এই সমস্যাটি সমাধান করার জন্য, বর্তমান বিট সেট করা আছে কিনা তা আমাদের পরীক্ষা করতে হবে, যদি এটি হয় তবে আমরা K এর মান হ্রাস করব। প্রতিটি চেকের পরে, আমরা bt 1 নম্বরটি স্থানান্তর করব, এটি পরবর্তী বিট দেবে, এছাড়াও আমরা করা শিফটের সংখ্যা বজায় রাখবে। K-এর মান 0 হয়ে গেলে, আমরা শিফটের গণনা প্রিন্ট করব।

উদাহরণ

আমাদের যুক্তির বাস্তবায়ন দেখানোর জন্য প্রোগ্রাম

#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. C++ এ একটি সংখ্যার সবচেয়ে উল্লেখযোগ্য সেট বিট খুঁজুন