Write an efficient program to count number of 1s in binary representation of an integer.
Examples :
Input : n = 6 Output : 2 Binary representation of 6 is 110 and has 2 set bits Input : n = 13 Output : 3 Binary representation of 11 is 1101 and has 3 set bits
Recommended: Please solve it on “PRACTICE ” first, before moving on to the solution.
1. Simple Method Loop through all bits in an integer, check if a bit is set and if it is then increment the set bit count. See below program.
C
#include <stdio.h> /* Function to get no of set bits in binary representation of positive integer n */
unsigned int countSetBits(unsigned int n)
{ unsigned int count = 0;
while (n) {
count += n & 1;
n >>= 1;
}
return count;
} /* Program to test function countSetBits */ int main()
{ int i = 9;
printf ( "%d" , countSetBits(i));
return 0;
} |
Output:
2
Recursive Approach :
C++
// Cpp implementation of recursive // approach to find the number // of set bits in binary representation // of positive integer n #include <bits/stdc++.h> using namespace std;
// recursive function to count set bits int countSetBits( int n)
{ // base case
if (n == 0)
return 0;
else
// if last bit set add 1 else add 0
return (n & 1) + countSetBits(n >> 1);
} // driver code int main()
{ // get value from user
int n = 9;
// function calling
cout << countSetBits(n);
return 0;
} // This code is contributed by Raj. |
Output:
2
Please refer complete article on Count set bits in an integer for more details!
Article Tags :
Recommended Articles