Related Articles
Count total unset bits in all the numbers from 1 to N
• Last Updated : 02 Dec, 2019

Given a positive integer N, the task is to count the total number of unset bits in the binary representation of all the numbers from 1 to N. Note that leading zeroes will not be counted as unset bits.

Examples:

Input: N = 5
Output: 4

Integer Binary Representation Count of unset bits
1 1 0
2 10 1
3 11 0
4 100 2
5 101 1

0 + 1 + 0 + 2 + 1 = 4

Input: N = 14
Output: 17

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach:

1. Iterate the loop from 1 to N.
2. While number is greater than 0 divide it by 2 and check the remainder.
3. If remainder is equal to 0 then increase the value of count by 1.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach ` `#include ` `using` `namespace` `std; ` ` `  `// Function to return the count of unset ` `// bits in the binary representation of ` `// all the numbers from 1 to n ` `int` `countUnsetBits(``int` `n) ` `{ ` ` `  `    ``// To store the count of unset bits ` `    ``int` `cnt = 0; ` ` `  `    ``// For every integer from the range [1, n] ` `    ``for` `(``int` `i = 1; i <= n; i++) { ` ` `  `        ``// A copy of the current integer ` `        ``int` `temp = i; ` ` `  `        ``// Count of unset bits in ` `        ``// the current integer ` `        ``while` `(temp) { ` ` `  `            ``// If current bit is unset ` `            ``if` `(temp % 2 == 0) ` `                ``cnt++; ` ` `  `            ``temp = temp / 2; ` `        ``} ` `    ``} ` `    ``return` `cnt; ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``int` `n = 5; ` ` `  `    ``cout << countUnsetBits(n); ` ` `  `    ``return` `0; ` `} `

## Java

 `// Java implementation of the approach ` `class` `GFG ` `{ ` ` `  `    ``// Function to return the count of unset ` `    ``// bits in the binary representation of ` `    ``// all the numbers from 1 to n ` `    ``static` `int` `countUnsetBits(``int` `n) ` `    ``{ ` ` `  `        ``// To store the count of unset bits ` `        ``int` `cnt = ``0``; ` ` `  `        ``// For every integer from the range [1, n] ` `        ``for` `(``int` `i = ``1``; i <= n; i++)  ` `        ``{ ` ` `  `            ``// A copy of the current integer ` `            ``int` `temp = i; ` ` `  `            ``// Count of unset bits in ` `            ``// the current integer ` `            ``while` `(temp > ``0``) ` `            ``{ ` ` `  `                ``// If current bit is unset ` `                ``if` `(temp % ``2` `== ``0``) ` `                ``{ ` `                    ``cnt = cnt + ``1``; ` `                ``} ` ` `  `                ``temp = temp / ``2``; ` `            ``} ` `        ``} ` `        ``return` `cnt; ` `    ``} ` ` `  `    ``// Driver code ` `    ``public` `static` `void` `main(String[] args)  ` `    ``{ ` `        ``int` `n = ``5``; ` `        ``System.out.println(countUnsetBits(n)); ` `    ``} ` `} ` ` `  `// This code is contributed by 29AjayKumar `

## Python3

 `# Python3 implementation of the approach  ` ` `  `# Function to return the count of unset  ` `# bits in the binary representation of  ` `# all the numbers from 1 to n  ` `def` `countUnsetBits(n) :  ` ` `  `    ``# To store the count of unset bits  ` `    ``cnt ``=` `0``;  ` ` `  `    ``# For every integer from the range [1, n]  ` `    ``for` `i ``in` `range``(``1``, n ``+` `1``) : ` `         `  `        ``# A copy of the current integer  ` `        ``temp ``=` `i;  ` ` `  `        ``# Count of unset bits in  ` `        ``# the current integer  ` `        ``while` `(temp) : ` ` `  `            ``# If current bit is unset  ` `            ``if` `(temp ``%` `2` `=``=` `0``) : ` `                ``cnt ``+``=` `1``;  ` ` `  `            ``temp ``=` `temp ``/``/` `2``;  ` ` `  `    ``return` `cnt;  ` ` `  `# Driver code  ` `if` `__name__ ``=``=` `"__main__"` `:  ` ` `  `    ``n ``=` `5``;  ` ` `  `    ``print``(countUnsetBits(n));  ` `     `  `# This code is contributed by AnkitRai01 `

## C#

 `// C# implementation of the approach ` `using` `System; ` ` `  `class` `GFG ` `{  ` ` `  `    ``// Function to return the count of unset ` `    ``// bits in the binary representation of ` `    ``// all the numbers from 1 to n ` `    ``static` `int` `countUnsetBits(``int` `n) ` `    ``{ ` `     `  `        ``// To store the count of unset bits ` `        ``int` `cnt = 0; ` `     `  `        ``// For every integer from the range [1, n] ` `        ``for` `(``int` `i = 1; i <= n; i++)  ` `        ``{ ` `     `  `            ``// A copy of the current integer ` `            ``int` `temp = i; ` `     `  `            ``// Count of unset bits in ` `            ``// the current integer ` `            ``while` `(temp > 0)  ` `            ``{ ` `     `  `                ``// If current bit is unset ` `                ``if` `(temp % 2 == 0) ` `                    ``cnt = cnt + 1; ` `     `  `                ``temp = temp / 2; ` `            ``} ` `        ``} ` `        ``return` `cnt; ` `    ``} ` ` `  `    ``// Driver code ` `    ``public` `static` `void` `Main()  ` `    ``{ ` `        ``int` `n = 5; ` `        ``Console.Write(countUnsetBits(n));  ` `    ``}  ` `} ` ` `  `// This code is contributed by Sanjit_Prasad `

Output:

```4
```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up
Recommended Articles
Page :