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

Input:n = 7Output:3

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 = 3Output:2

**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 <bits/stdc++.h>` `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

`<?php` `// PHP implementation of the approach` `// Function to return the required count` `function` `count_t(` `$n` `)` `{` ` ` `// To store the count of numbers` ` ` `$cnt` `= 0;` ` ` `$p` `= 1;` ` ` `while` `(` `$p` `<= ` `$n` `)` ` ` `{` ` ` `$cnt` `++;` ` ` `// Every power of 2 contains` ` ` `// only 1 set bit` ` ` `$p` `*= 2;` ` ` `}` ` ` `return` `$cnt` `;` `}` `// Driver code` `$n` `= 7;` `echo` `count_t(` `$n` `);` `// This Code is contributed by ajit.` `?>` |

## Javascript

`<script>` `// Javascript implementation of the approach` `// Function to return the required count` `function` `count(n)` `{` ` ` `// To store the count of numbers` ` ` `var` `cnt = 0;` ` ` `var` `p = 1;` ` ` `while` `(p <= n) {` ` ` `cnt++;` ` ` `// Every power of 2 contains` ` ` `// only 1 set bit` ` ` `p *= 2;` ` ` `}` ` ` `return` `cnt;` `}` `// Driver code` `var` `n = 7;` `document.write(count(n));` `// This code is contributed by noob2000.` `</script>` |

**Output:**

3

**Time Complexity:** O(log n)

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. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**

In case you wish to attend live classes with industry experts, please refer **Geeks Classes Live**