# 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