এই সমস্যাতে, দুটি সংখ্যা 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.
এখানে ডানপাশের সেট বিট ইনডেক্স ২-তে।
উদাহরণ
সমাধানের প্রোগ্রাম:
#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