C/C++ Program to Count set bits in an integer

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.

__PRACTICE__**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!

Want to learn from the best curated videos and practice problems, check out the **C Foundation Course **for Basic to Advanced C.