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