इस समस्या में, हमें दो नंबर N और M दिए गए हैं। हमारा काम संख्या के द्विआधारी प्रतिनिधित्व में सबसे सही भिन्न बिट का सूचकांक खोजना है।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट - एन =12 , एम =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