हमें एक संख्या दी गई है मान लीजिए संख्या और कार्य संख्या में 1 जोड़े जाने पर बदले गए बिट्स की कुल संख्या की गणना करना है।
किसी संख्या का द्विआधारी निरूपण दी गई संख्या को 0 और 1 के रूप में परिवर्तित करके किया जाता है और यह विभिन्न विधियों द्वारा किया जाता है। एक विधि में, हम किसी दिए गए नंबर के एलसीएम की गणना 2 से करते हैं और यदि कोई रिमाइंडर 0 के अलावा अन्य है तो बिट को 1 पर सेट किया जाता है और इसे 0 पर सेट किया जाएगा।
बिट्स के लिए अतिरिक्त टेबल हैं
0 + 1 = 1 1 + 0 = 1 0 + 0 = 0 1 + 1 = 1 ( 1 bit carry)
उदाहरण के लिए
Input − num = 10 Output − count is : 1
स्पष्टीकरण - 10 का द्विआधारी प्रतिनिधित्व 1010 है और जब इसमें 1 जोड़ा जाता है तो प्रतिनिधित्व 1011 हो जाता है। स्पष्ट रूप से केवल एक बिट बदल गया है इसलिए गिनती 1 है।
Input − num = 5 Output − count is : 2
स्पष्टीकरण - 5 का बाइनरी प्रतिनिधित्व 101 है और जब इसमें 1 जोड़ा जाता है तो प्रतिनिधित्व 110 हो जाता है। स्पष्ट रूप से दो बिट्स बदल गए हैं इसलिए गिनती 2 है
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
पूर्णांक प्रकार की संख्या दर्ज करें, मान लें कि पूर्णांक संख्या
-
एक वैरिएबल घोषित करें जो काउंट को स्टोर करेगा, मान लीजिए, इंट काउंट
-
एक और चर लें मान लें कि अस्थायी है जो संख्या के XOR की गणना करेगा और इसे n ^ (n + 1)
पर सेट करेगा। -
काउंट वेरिएबल कॉल में __builtin_popcount(temp). यह फ़ंक्शन किसी दिए गए पूर्णांक बाइनरी प्रतिनिधित्व में संख्याओं की गणना की गणना करना है। यह GCC कंपाइलर का इनबिल्ट फंक्शन है।
-
गिनती वापस करें
-
परिणाम प्रिंट करें।
उदाहरण
#include <iostream> using namespace std; // Function to find number of changed bit int changedbit(int n){ int XOR = n ^ (n + 1); // Count set bits in xor value int count = __builtin_popcount(XOR); return count; } int main(){ int n = 10; cout <<"count is: " <<changedbit(n); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो हमें निम्न आउटपुट मिलेगा -
count is: 1