इस समस्या में, हमें दो नंबर M और N दिए गए हैं। हमारा काम दो नंबरों के सबसे दाहिने सामान्य बिट की स्थिति (इंडेक्स) को प्रिंट करना है।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट - एन =4 , एम =7
आउटपुट -3
स्पष्टीकरण -(4)2 =100 , (7)2 =111। सबसे सही सामान्य बिट इंडेक्स 3 पर है।
इस समस्या को हल करने के लिए, हमें संख्याओं के सभी समान बिट्स को खोजना होगा। सभी समान बिट्स को खोजने के लिए हमें M और N का xor मिलेगा। फिर हम M^N के निषेध में सबसे सही बिट पाएंगे।
यह समझने में थोड़ा जटिल लगता है, आइए इस पद्धति का उपयोग करके एक उदाहरण को हल करें।
N = 4 , M = 7 ~N^M = 100.
यहां सबसे दाहिना सेट बिट इंडेक्स 3 पर है।
उदाहरण
हमारे समाधान के कार्यान्वयन को दिखाने के लिए कार्यक्रम,
#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