Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में एकमात्र सेट बिट की स्थिति खोजें


इस समस्या में हमें एक संख्या N दी गई है जिसकी बाइनरी प्रतिनिधित्व में केवल एक सेट बिट है। हमारा कार्य एकमात्र सेट बिट की स्थिति खोजना है। यदि संख्या में केवल एक सेट बिट है तो संख्या की स्थिति वापस करें अन्यथा अमान्य संख्या प्रिंट करें।

आइए एक उदाहरण से इस समस्या को समझते हैं,

इनपुट

N = 32

आउटपुट

6

व्याख्या

संख्या का बाइनरी प्रतिनिधित्व 10000 है।

समाधान दृष्टिकोण

आगे बढ़ने से पहले एक तथ्य जानना आवश्यक है कि संख्या में केवल 1 सेट बिट होगी यदि यह 2 की घात है। अन्यथा इसमें अधिक संख्या में सेट बिट्स होंगे।

एक सरल समाधान सबसे दाएं बिट से शुरू करके बिट्स के मान की जांच करना है। हम यह जांचने के लिए एक लूप का उपयोग करेंगे कि यह सेट है या नहीं।

हमारे समाधान के कार्य को दर्शाने वाला प्रोग्राम,

उदाहरण

#include <iostream> using namespace std; bool isPowerOfTwo(unsigned n) {    if(n>0) {       while(n%2 == 0)       n/=2;       if(n == 1)          return true;    }    if(n == 0 || n != 1)       return false;    return false; } int findPostionOfSetBit(unsigned n) {    unsigned i = 1, position = 1;    while (!(i & n)) {       i = i << 1;       ++position;    }    return position; } int main(void){    int n = 64;    if(!isPowerOfTwo(n))       cout<<"Invalid Number!";    else       cout<<"The position of the number "<<n<<" is "<<findPostionOfSetBit(n);    return 0; }

आउटपुट

The position of the number 64 is 7

समस्या को हल करने की एक वैकल्पिक विधि शिफ्ट ऑपरेशन का उपयोग करके संख्या को दाएं शिफ्ट करना है जब तक कि यह 0 न हो जाए। अंत में 0 तक पहुंचने के लिए किए गए शिफ्ट्स की संख्या सेट बिट की स्थिति है।

हमारे समाधान के कार्य को दर्शाने वाला प्रोग्राम,

उदाहरण

#include <iostream> using namespace std; bool isPowerOfTwo(unsigned n) {    if(n>0) {       while(n%2 == 0)          n/=2;       if(n == 1)          return true;    }    if(n == 0 || n != 1)       return false;    return false; } int findPostionOfSetBit(unsigned n) {    unsigned position = 0;    while (n) {       n = n >> 1;       ++position;    }    return position; } int main(void){    int n = 64;    if(!isPowerOfTwo(n))       cout<<"Invalid Number!";    else       cout<<"The position of the number "<<n<<" is       "<<findPostionOfSetBit(n);    return 0; }

आउटपुट

The position of the number 64 is 7

समस्या को हल करने की एक और विधि गणित सूत्रों का उपयोग करना है। हम जानते हैं कि,

2i = n, जहां n संख्या है और i संख्या की स्थिति है i का मान यहां सूत्र का उपयोग करके पाया जा सकता है, i = log2(n)

हमारे समाधान के कार्य को दर्शाने वाला प्रोग्राम,

उदाहरण

#include <iostream> #include <math.h> using namespace std; bool isPowerOfTwo(unsigned n) {    if(n>0) {       while(n%2 == 0)          n/=2;       if(n == 1)          return true;    }    if(n == 0 || n != 1)       return false;    return false; } int findPostionOfSetBit(unsigned n) {    unsigned position = log2(n) + 1; ;    return position; } int main(void){    int n = 64;    if(!isPowerOfTwo(n))       cout<<"Invalid Number!";    else       cout<<"The position of the number "<<n<<" is "<<findPostionOfSetBit(n);    return 0; }

आउटपुट

The position of the number 64 is 7

  1. C++ में स्ट्रिंग के सबस्ट्रिंग्स की संख्या निकालना C++ में स्ट्रिंग के सबस्ट्रिंग्स की संख्या निकालना

    इस लेख में, आप एक दी गई स्ट्रिंग में बनने वाले सबस्ट्रिंग्स (गैर-खाली) की संख्या निकालने के दृष्टिकोण के बारे में जानेंगे।इनपुट: string = moon आउटपुट: 10 व्याख्या: सबस्ट्रिंग्स हैं m, o, o, n, mo, oo, on, moo, oon और moon। इनपुट: string = yellow आउटपुट: 21समाधान खोजने का दृष्टिकोणमान लें स्ट्रिंग की

  1. C++ का उपयोग करके स्टॉपिंग स्टेशनों की संख्या ज्ञात करें C++ का उपयोग करके स्टॉपिंग स्टेशनों की संख्या ज्ञात करें

    बिंदु X और Y के बीच n संख्या में इंटरमीडिएट ट्रेन स्टेशन हैं। उन विभिन्न तरीकों की गणना करें जिनसे ट्रेनों को s स्टेशनों पर रुकने के लिए व्यवस्थित किया जा सकता है जैसे कि कोई दो स्टेशन एक-दूसरे के बगल में न हों। तो इस लेख में, हम स्टॉपिंग स्टेशनों की संख्या ज्ञात करने के लिए हर संभव दृष्टिकोण की व्य

  1. C++ का उपयोग करके एक सेट पर रिफ्लेक्सिव रिलेशंस की संख्या ज्ञात करें C++ का उपयोग करके एक सेट पर रिफ्लेक्सिव रिलेशंस की संख्या ज्ञात करें

    इस लेख में, हम एक सेट पर रिफ्लेक्सिव रिलेशंस की संख्या ज्ञात करने के दृष्टिकोणों की व्याख्या करेंगे। इस समस्या में, हमें संख्या n दी गई है, और n प्राकृतिक संख्याओं के एक सेट पर, हमें रिफ्लेक्सिव रिलेशंस की संख्या निर्धारित करनी है।रिफ्लेक्सिव रिलेशन - एक सेट A में एक रिलेशन को रिफ्लेक्सिव कहा जाता ह