हमें एक संख्या दी गई है मान लीजिए 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