Count of numbers having only 1 set bit in the range [0, n]

• Difficulty Level : Medium
• Last Updated : 24 Jun, 2022

Given an integer n, the task is to count the numbers having only 1 set bit in the range [0, n].
Examples:

Input: n = 7
Output:
Explaination: 000, 001, 010, 011, 100, 101, 110 and 111 are the binary representation of all the numbers upto 7. And there are only 3 numbers ( 001, 010 and 100 ) having only 1 set bit.

Input: n = 3
Output:

Approach: If k bits are required to represent n then there are k numbers possible as 1 can be positioned at k different positions each time.
Below is the implementation of the above approach

C++

 `// C++ implementation of the approach` `#include ` `using` `namespace` `std;`   `// Function to return the required count` `int` `count(``int` `n)` `{`   `    ``// To store the count of numbers` `    ``int` `cnt = 0;` `    ``int` `p = 1;` `    ``while` `(p <= n) {` `        ``cnt++;`   `        ``// Every power of 2 contains` `        ``// only 1 set bit` `        ``p *= 2;` `    ``}` `    ``return` `cnt;` `}`   `// Driver code` `int` `main()` `{` `    ``int` `n = 7;` `    ``cout << count(n);`   `    ``return` `0;` `}`

Java

 `// Java implementation of the approach` `class` `GFG {`   `    ``// Function to return the required count` `    ``static` `int` `count(``int` `n)` `    ``{`   `        ``// To store the count of numbers` `        ``int` `cnt = ``0``;` `        ``int` `p = ``1``;` `        ``while` `(p <= n) {` `            ``cnt++;`   `            ``// Every power of 2 contains` `            ``// only 1 set bit` `            ``p *= ``2``;` `        ``}` `        ``return` `cnt;` `    ``}`   `    ``// Driver code` `    ``public` `static` `void` `main(String args[])` `    ``{` `        ``int` `n = ``7``;` `        ``System.out.print(count(n));` `    ``}` `}`

C#

 `// C# implementation of the approach` `using` `System;` `class` `GFG {`   `    ``// Function to return the required count` `    ``static` `int` `count(``int` `n)` `    ``{`   `        ``// To store the count of numbers` `        ``int` `cnt = 0;` `        ``int` `p = 1;` `        ``while` `(p <= n) {` `            ``cnt++;`   `            ``// Every power of 2 contains` `            ``// only 1 set bit` `            ``p *= 2;` `        ``}` `        ``return` `cnt;` `    ``}`   `    ``// Driver code` `    ``public` `static` `void` `Main()` `    ``{` `        ``int` `n = 7;` `        ``Console.Write(count(n));` `    ``}` `}`

Python3

 `# Python3 implementation of the approach`   `# Function to return the required count` `def` `count(n):` `    `  `    ``# To store the count of numbers` `    ``cnt ``=` `0` `    ``p ``=` `1` `    ``while` `(p <``=` `n):` `        ``cnt ``=` `cnt ``+` `1` `        `  `        ``# Every power of 2 contains ` `        ``# only 1 set bit` `        ``p ``*``=` `2` `    ``return` `cnt`   `# Driver code` `n ``=` `7` `print``(count(n));`

PHP

 ``

Javascript

 ``

Output

`3`

Time Complexity: O(log n)
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up
Recommended Articles
Page :