এই সমস্যাতে, দুটি সংখ্যা M এবং N দেওয়া আছে। আমাদের কাজ হলো দুটি সংখ্যার ডানপাশের সাধারণ বিটের পজিশন (ইনডেক্স) প্রিন্ট করা।
উদাহরণ:
ইনপুট - N = 4, M = 7
আউটপুট - 3
ব্যাখ্যা - (4)2 = 100, (7)2 = 111। ডানপাশের সাধারণ বিট ইনডেক্স ৩-তে।
সমাধানের জন্য, আমাদের দুটি সংখ্যার সব সমান বিট খুঁজে বের করতে হবে। সমান বিট খুঁজতে M এবং N-এর XOR বের করব। তারপর M^N-এর নেগেশনের ডানপাশের বিট বের করব।
এটি একটু জটিল মনে হতে পারে, চলুন এই পদ্ধতিতে একটি উদাহরণ সমাধান করি।
N = 4, M = 7 ~N^M = 100.
এখানে ডানপাশের সেট বিট ইনডেক্স ৩-তে।
উদাহরণ
সমাধানের প্রোগ্রাম:
#include <iostream>
#include <math.h>
using namespace std;
int rightSetBit(int N) {
int bitIndex = log2(N & -N)+1;
return bitIndex;
}
void rightSameBit(int m, int n) {
int diffBit = rightSetBit(~(m^n));
cout << diffBit;
}
int main() {
int N = 4, M = 7;
cout << "Postiion of first right same bit of the number " << N << " & " << M << " is ";
rightSameBit(N, M);
return 0;
} আউটপুট
Postiion of first right same bit of the number 4 & 7 is 3