In **Power of Two** problem we have given an integer, check if it is the power of 2 or not. A number in the power of two if it has only one set bit in the binary representation. Let’s see one example of a number that contains only one set bit. If our input is 16 then we can represent it in binary format like 10000. Here we see that only one bit is 1 which means the number represents in the power of 2. Now see one example in which a set bit is more than 1. If our input is 13 then we represent it in binary format like 1101. Here we see there are 3 set bits. So we can’t represent it in the form of 2^y where y is an integer greater than 0.

Table of Contents

## Input Format

First-line containing an integer value N.

## Output Format

Print “true” if we represent it in a given format else print “false”.

## Constraints

- 1<=N<=10^18.

**Sample Input**

4

**Sample Output **

true

**Explanation**

We know that already the binary representation of 4 is 100 which means only one set bit here. So we represent it in form 2^y(2^2).

**Iterative approach **

- Negative numbers and zero can never be in form 2^y where y is an integer.
- check if n can be divided by 2. If yes, divide n by 2 and check it repeatedly.
- if at last n is reduced to 1 then n is a power of 2 else it is not the form 2^y where y is an integer.

**Implementation**

**C++ Program for Power of Two**

#include <bits/stdc++.h> using namespace std; bool isPowerOfTwo(int n) { if (n <= 0) return false; while (n%2 == 0) n/=2; return n == 1; } int main() { int n=4; int ans=isPowerOfTwo(n); if(ans) cout<<"true"<<endl; else cout<<"false"<<endl; return 0; }

**Output**

true

**Java Program for Power of Two**

public boolean isPowerOfTwo(int n) { if (n <= 0) return false; while (n%2 == 0) n/=2; return n == 1; }

### Time complexity

**O(log n)** because at each step we are dividing the number by 2.

**Bit operation approach**

- Negative numbers and zero can never be a power of 2.
- If a number is power of 2 then ( n & (n-1) )==0

**Implementation**

**C++ Program for Power of Two**

#include <bits/stdc++.h> using namespace std; bool isPowerOfTwo(int n) { return (n > 0 && (n & (n-1)) == 0); } int main() { int n=4; int ans=isPowerOfTwo(n); if(ans) cout<<"true"<<endl; else cout<<"false"<<endl; return 0; }

**Output**

true

**Java Program for Power of Two**

public boolean isPowerOfTwo(int n) { return (n>0&&(n & (n-1))==0); }

### Time Complexity

**O(1)** because using only single AND we can find whether the number satisfies the condition or not.