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

C++ में किसी संख्या में K-वें सेट बिट की स्थिति


इस समस्या में, हमें दो पूर्णांक N और K दिए गए हैं। हमारा कार्य K th का सूचकांक ज्ञात करना है। संख्या N का थोड़ा सा सेट करें, दाईं ओर से गिना जाए।

संख्या के द्विआधारी प्रतिनिधित्व से सेट बिट्स की जाँच की जाती है। बाइनरी प्रतिनिधित्व में इंडेक्सिंग इंडेक्स 0 से दाएं दिशा से शुरू होती है और बाईं ओर फैलती है।

उदाहरण - बाइनरी नंबर '011101' में, इंडेक्स 0 पर दाईं ओर से हमारे पास 1 है, इंडेक्स 1 पर दाईं ओर से 0 है, और इसी तरह।

अब, समस्या को समझने के लिए एक उदाहरण लेते हैं

इनपुट - एन =6, के =2

आउटपुट -2

स्पष्टीकरण - 6 का बाइनरी प्रतिनिधित्व 0110 है। दाईं ओर से दूसरा सेट बिट इंडेक्स 2 पर होगा।

इस समस्या को हल करने के लिए, हमें यह जांचना होगा कि क्या वर्तमान बिट सेट है, यदि ऐसा है तो हम K के मान को कम कर देंगे। प्रत्येक चेक के बाद, हम संख्या बीटी 1 को स्थानांतरित कर देंगे, यह अगला बिट देगा, हम भी की गई पारियों की संख्या को बनाए रखेगा। एक बार जब K का मान 0 हो जाता है, तो हम की गई पारियों की संख्या को प्रिंट कर देंगे।

उदाहरण

हमारे तर्क के कार्यान्वयन को दिखाने के लिए कार्यक्रम

#include <iostream>
using namespace std;
int FindIndexKthBit(int N, int K) {
   int index=0;
   while (N) {
      if (N & 1)
         K--;
      if (!K)
         return index;
      index++;
      N = N >> 1;
   }
   return -1;
}
int main() {
   int N = 12, K = 2;
   cout<<"The "<<K<<"th set bit of the number "<<N<<" is at index : \t";
   int index = FindIndexKthBit(N, K);
   if (index!=-1)
      cout<<index;
   else
      cout<<"\nsorry no index found";
   return 0;
}

आउटपुट

The 2th set bit of the number 12 is at index : 3

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

    इस लेख में, हम एक सेट पर रिफ्लेक्सिव संबंधों की संख्या को खोजने के तरीकों की व्याख्या करेंगे। इस समस्या में, हमें संख्या n दी गई है, और n प्राकृत संख्याओं के समुच्चय पर, हमें प्रतिवर्ती संबंधों की संख्या निर्धारित करनी होगी। चिंतनशील संबंध − समुच्चय A में एक संबंध प्रतिवर्ती कहलाता है यदि (a, a) R

  1. C++ में सबसे दाहिने सेट बिट की स्थिति

    इस समस्या में, हमें एक नंबर N दिया जाता है। हमारा काम संख्या के सबसे दाहिने सेट बिट के इंडेक्स को प्रिंट करना है। समस्या को समझने के लिए एक उदाहरण लेते हैं, इनपुट -4 आउटपुट -3 स्पष्टीकरण − 4 का बाइनरी 100 है, सबसे दाहिने सेट बिट का सूचकांक 3 है। इस समस्या को हल करने के लिए, एक सरल समाधान यह होगा

  1. सी ++ में किसी संख्या का सबसे महत्वपूर्ण सेट बिट खोजें

    यहां हम देखेंगे कि यदि कोई संख्या दी गई है, तो सबसे महत्वपूर्ण बिट मान का मान कैसे ज्ञात किया जाए, जो कि निर्धारित है। मान 2 की शक्ति है। इसलिए यदि संख्या 10 है, तो MSB मान 8 होगा। हमें MSB की स्थिति का पता लगाना है, फिर kth स्थिति पर एक सेट-बिट के साथ संख्या का मान ज्ञात करना है। उदाहरण #include&l