GeeksforGeeks App
Open App
Browser
Continue

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

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