কম্পিউটার

C++ এ ডানদিকের ভিন্ন বিটের অবস্থান


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

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

ইনপুট − N =12 , M =9

আউটপুট − 2

ব্যাখ্যা − (12)2 =1100 এবং (10)2 =1010৷

ডান থেকে দ্বিতীয় বিটটি একটি ভিন্ন বিট।

এই সমস্যা সমাধানের জন্য, আমাদের সংখ্যার বিভিন্ন বিট খুঁজে বের করতে হবে। সমস্ত ভিন্ন বিট খুঁজতে আমরা M এবং N-এর xor খুঁজে পাব। তারপর আমরা M^N-এর ডানদিকের বিটটি খুঁজে পাব।

এটি বোঝার জন্য কিছুটা জটিল বলে মনে হচ্ছে আসুন এই পদ্ধতিটি ব্যবহার করে একটি উদাহরণ সমাধান করি।

N = 12 , M = 9
N^M = 0110.

এখানে একটি ডানদিকের সেট বিট সূচী 2 এ রয়েছে।

উদাহরণ

আমাদের সমাধানের বাস্তবায়ন দেখানোর জন্য প্রোগ্রাম,

#include <iostream>
#include <math.h>
using namespace std;
int rightSetBit(int N) {
   int bitIndex = log2(N & -N)+1;
   return bitIndex;
}
void rightDiffBit(int m, int n) {
   int diffBit = rightSetBit(m^n);
   cout<<diffBit;
}
int main() {
   int N = 12, M = 10;
   cout<<"Postion of first right different bit of the number "<<N<<" & "<<M<<" is ";
   rightDiffBit(N, M);
   return 0;
}

আউটপুট

Postion of first right different bit of the number 12 & 10 is 2

  1. C++ এ T সেকেন্ডের পর ব্যাঙের অবস্থান

  2. C++ এ একটি বৃত্তের বিপরীতে একজন ব্যক্তির অবস্থান

  3. C++ এ বিভিন্ন ধরনের অপারেটর

  4. বিভিন্ন C++ সংস্করণ