सेट बिट्स गिनने का अर्थ है दिए गए पूर्णांक की 1'S गिनना। इसके लिए, हमारे पास कई समाधान हैं जिन्हें लागू किया जा सकता है। इस मामले के लिए, हमारे पास एक द्विआधारी संख्या (एक पूर्णांक का द्विआधारी प्रतिनिधित्व) है, जिसके लिए हमें स्ट्रिंग से 1 की संख्या गिननी होगी।
1 की संख्या गिनने के लिए, हम स्ट्रिंग लेंगे, प्रत्येक तत्व को पार करेंगे और स्ट्रिंग के सभी 1 को गिनेंगे। उदाहरण के लिए, यदि हम 17 इनपुट करते हैं तो आउटपुट 2 होगा क्योंकि 17 का बाइनरी 10001 है जिसमें दो 1 हैं।
Input: Enter a positive integer: 6 Output: 2
स्पष्टीकरण
6 का द्विआधारी प्रतिनिधित्व 110 है जिसमें 2 सेट बिट्स हैं
इस पुनरावृत्त दृष्टिकोण के लिए प्रति बिट एक पुनरावृत्ति की आवश्यकता होती है। यह संख्या के सभी बिट्स के माध्यम से चलता है। जब कोई और बिट सेट नहीं किया जाता है तो पुनरावृत्ति समाप्त हो जाती है। सबसे खराब स्थिति में, केवल सबसे महत्वपूर्ण बिट सेट वाले 32-बिट शब्द पर, यह 32 पुनरावृत्तियों के माध्यम से लूप करेगा। यह समाधान सबसे सरल और उपयोगी है यदि 1 विरल हैं और कम से कम महत्वपूर्ण बिट्स में से हैं।
उदाहरण
#include <stdio.h> int main(void) { unsigned int n = 34; for (c = 0; n; n >>= 1) { c += n & 1; } printf("%d\n", c); }