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

C++ में 1 जोड़ने के बाद बदले गए बिट्स की संख्या गिनना


हमें एक संख्या दी गई है मान लीजिए num और कार्य दिया गया संख्या में 1 जोड़ने पर बदले गए बिट्स की कुल संख्या की गणना करना है।

किसी संख्या का बाइनरी प्रतिनिधित्व दिए गए संख्या को 0 और 1 के रूप में परिवर्तित करके किया जाता है और यह विभिन्न विधियों द्वारा किया जाता है। एक विधि में, हम दी गई संख्या का 2 से LCM की गणना करते हैं और यदि शेषफल 0 के अलावा अन्य है तो बिट को 1 पर सेट किया जाता है अन्यथा इसे 0 पर सेट किया जाएगा।

बिट्स के लिए जोड़ तालिका:

0 + 1 = 1 
1 + 0 = 1 
0 + 0 = 0 
1 + 1 = 1 (1 बिट कैरी)

उदाहरण

इनपुट: num = 10 आउटपुट: count is: 1

व्याख्या: 10 का बाइनरी प्रतिनिधित्व 1010 है और जब इसमें 1 जोड़ा जाता है तो प्रतिनिधित्व 1011 हो जाता है। स्पष्ट रूप से केवल एक बिट बदला इसलिए काउंट 1 है।

इनपुट: num = 5 आउटपुट: count is: 2

व्याख्या: 5 का बाइनरी प्रतिनिधित्व 101 है और जब इसमें 1 जोड़ा जाता है तो प्रतिनिधित्व 110 हो जाता है। स्पष्ट रूप से दो बिट्स बदले इसलिए काउंट 2 है।

उपयोग किया गया दृष्टिकोण:

  • पूर्णांक प्रकार की संख्या इनपुट करें मान लीजिए int num
  • एक वैरिएबल घोषित करें जो काउंट स्टोर करेगा मान लीजिए int count
  • एक और वैरिएबल लें मान लीजिए temp जो num का XOR गणना करेगा और इसे n ^ (n + 1) पर सेट करें
  • काउंट वैरिएबल में __builtin_popcount(temp) कॉल करें। यह फ़ंक्शन दिए गए पूर्णांक के बाइनरी प्रतिनिधित्व में संख्याओं की गणना करने के लिए है। यह GCC कंपाइलर का एक इनबिल्ट फ़ंक्शन है।
  • काउंट वापस करें
  • परिणाम प्रिंट करें।

उदाहरण (C++ कोड)

#include <iostream> 
using namespace std; 
// बदले गए बिट्स की संख्या ढूंढने के लिए फ़ंक्शन 
int changedbit(int n){ 
    int XOR = n ^ (n + 1); 
    // XOR मान में सेट बिट्स गिनें 
    int count = __builtin_popcount(XOR); 
    return count; 
} 
int main(){ 
    int n = 10; 
    cout << "count is: " << changedbit(n); 
    return 0; 
}

आउटपुट

count is: 1
  1. - C++ में हेक्साडेसिमल नंबर की गिनती करें

    हमें एक रेंज दी गई है जिसमें प्रारंभ और अंत है और कार्य दी गई रेंज में मौजूद हेक्साडेसिमल नंबरों या वर्णमाला की संख्या की गणना करना है। हेक्साडेसिमल वर्णमाला क्या हैं? कंप्यूटर शब्दों में, हेक्साडेसिमल नंबर वे नंबर हैं जिनका आधार 16 होता है जिसका अर्थ है कि बाइनरी अंक को 16-बिट में दर्शाया जा सकता

  1. - C++ में दी गई संख्या के सेट बिट्स का उपयोग करके न्यूनतम संख्या

    समस्या कथनएक अनसाइन्ड संख्या दी गई है, दी गई अनसाइन्ड संख्या के बिट्स का उपयोग करके बनाई जा सकने वाली न्यूनतम संख्या ज्ञात करें।उदाहरणयदि इनपुट = 10 तो उत्तर 3 होगा10 का बाइनरी प्रतिनिधित्व 1010 है और 2 सेट बिट्स के साथ न्यूनतम संख्या 0011 यानी 3 हैएल्गोरिदम1. सेट बिट्स की संख्या गिनें। 2. (सेट बिट्

  1. - C++ में सेट बिट्स की संख्या के अनुसार ऐरे सॉर्ट करें

    यहां हम सेट-बिट्स के आधार पर ऐरे को सॉर्ट करने की एक दिलचस्प समस्या देखेंगे। जब ऐरे में किसी एलिमेंट में अधिक सेट-बिट्स होते हैं, तो उसे उस एलिमेंट से पहले रखा जाएगा जिसमें कम सेट बिट्स होते हैं। मान लीजिए कुछ नंबर्स हैं 12, 15, 7। तो सेट बिट्स मूल रूप से उनके बाइनरी प्रतिनिधित्व में 1s की संख्या है