# Count total unset bits in all the numbers from 1 to N

• Last Updated : 12 Nov, 2021

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:

0 + 1 + 0 + 2 + 1 = 4
Input: N = 14
Output: 17

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`

## Javascript

 ``

Output:

`4`

Time Complexity: O(n * log n)

Auxiliary Space: O(1)

My Personal Notes arrow_drop_up
Recommended Articles
Page :