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

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.

এখানে ডানপাশের সেট বিট ইনডেক্স ২-তে।

উদাহরণ

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

#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++ ভার্সন