एक संख्या n को देखते हुए, हमें Xor ऑपरेशन का उपयोग करके संख्या को 2^X-1 के रूप में बनाने के लिए चरणों को प्रिंट करना होगा।
- हमें किसी भी 2^M-1 . के साथ नंबर XOR करना चाहिए , जहां एम विषम चरण में आपके द्वारा चुना गया है।
- सम चरण में संख्या में 1 की वृद्धि करें
चरण को तब तक निष्पादित करते रहें जब तक n 2^X-1 न हो जाए, और सभी चरणों को प्रिंट कर लें
उदाहरण
इनपुट:22आउटपुट:चरण 1:15 के साथ एक्सओआर चरण 2:1 चरण 3 से बढ़ाएँ:7 के साथ एक्सओएल्गोरिदम
int find_leftmost_unsetbit(int n)STARTSTEP 1:घोषित और असाइन करें ind =-1, i =1STEP 2:लूप जबकि n IF !(n &1) फिर, i END के साथ I END को असाइन करें यदि I END I BY 1 LEFT SHIFT n 1END तक जबकि 3 :रिटर्न indSTOPvoid Perform_steps(int n)STARTSTEP 1 :DECLARE और ASSIGN left =find_leftmost_unsetbit(n)STEP 2 :IF बाएँ ==-1 फिर, प्रिंट करें "कोई चरण नहीं किया जाना है" वापसी IFSTEP 3 और ASSIGN चरण =1चरण 4 :लूप करते समय find_leftmost_unsetbit(n) !=-1 यदि चरण% 2 ==0 तब, वृद्धि n 1 प्रिंट द्वारा "चरण n:1\n तक बढ़ाएँ" अन्यथा घोषणा और असाइन करें m =find_leftmost_unsetbit(n) और SET num =(pow(2, m) - 1) SET n =n ^ num PRINT "Step N:Xor Num END के साथ अगर इंक्रीमेंट स्टेप बाय 1END LOOPSTOPउदाहरण
#शामिल करें इंट मैं =1; जबकि (एन) {अगर (!(एन और 1)) ind =i; मैं++; एन>>=1; } रिटर्न इंड;} शून्य परफॉर्म_स्टेप्स (इंट एन) {// सबसे बाईं ओर अनसेट बिट इंट लेफ्ट का पता लगाएं =फाइंड_लेफ्टमोस्ट_अनसेटबिट (एन); // यदि कोई बिट नहीं है (बाएं ==-1) {प्रिंटफ ("कोई चरण नहीं किया जाना है \ n"); वापसी; } // चरणों की संख्या गिनने के लिए int step =1; // तब तक दोहराएं जब तक संख्या 2^x - 1 के रूप में हो (find_leftmost_unsetbit(n) !=-1) {// यदि चरण सम है तो 1 से बढ़ाएँ यदि (चरण% 2 ==0) { n +=1; प्रिंटफ ("चरण% d:1 \ n द्वारा बढ़ाएँ", चरण); } // यदि चरण विषम है तो xor 2^m-1 और के साथ {// सबसे बाईं ओर अनसेट बिट int m =find_leftmost_unsetbit(n); इंट नंबर =(इंट) (पाउ (2, एम) - 1); एन =एन ^ संख्या; प्रिंटफ ("चरण% d:Xor% d \ n के साथ", चरण, संख्या); } // कदम बढ़ाने के लिए कदम +=1; }}इंट मेन (){ इंट एन =22; प्रदर्शन_स्टेप्स (एन); वापसी 0;}आउटपुट
यदि हम उपरोक्त प्रोग्राम चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा -
चरण 1:Xor 15चरण 2 के साथ:1चरण 3 से बढ़ाएँ:Xor 7चरण 4 के साथ:1 चरण 5 से बढ़ाएँ:1 के साथ Xor