यहां हम देखेंगे कि हम एक पूर्णांक संख्या में सेट बिट्स की संख्या की जांच कैसे कर सकते हैं। सेट बिट्स एक संख्या के द्विआधारी प्रतिनिधित्व में 1 हैं। उदाहरण के लिए संख्या 13 में तीन सेट बिट्स 1101 हैं। तो गिनती 3 होगी।
इस समस्या को हल करने के लिए, हम संख्या को दाईं ओर स्थानांतरित करेंगे, और यदि LSb 1 है, तो गिनती बढ़ाएँ। जब तक संख्या 0 नहीं हो जाती, यह चलती रहेगी।
एल्गोरिदम
काउंटसेटबिट ()
begin count := 0 while count is not 0, do if LSb of n is set, then count := count + 1 end if n := n after shifting 1 bit to right done return count end
उदाहरण
#include<iostream>
using namespace std;
int count_set_bit(int n) {
int count = 0;
while(n != 0) {
if(n & 1 == 1) {
count++;
}
n = n >> 1; //right shift 1 bit
}
return count;
}
int main() {
int n;
cout << "Enter a number: ";
cin >> n;
cout << "Number of set bits: " << count_set_bit(n);
} आउटपुट
Enter a number: 29 Number of set bits: 4
यह प्रोग्राम C में चलेगा और आउटपुट जेनरेट करेगा, लेकिन जब हम C++ में कंपाइल करना चाहते हैं, तो यह कंपाइल समय के दौरान एक एरर लौटाएगा। यह कहेगा कि बहुत सारे तर्क पारित हो गए हैं।