In this article, we will learn how to check the number is power of two. Let’s get started.

## Given problem

Below is an description of this problem:

``````Given a positive integer, write a function to find if it is a power of two or not.

Example 1: Input: n = 4
Output: Yes

Example 2: Input: n = 7
Output: No

Example 3: Input: n = 32
Output: Yes
``````

## Solution for checking number is power of 2

To solve this problem, we have some solutions:

• Divide an integer number to 2. If the remained number is different than 0, then it is not power of 2.

• Using log() method of Math package. Carefully, because its data type is double or float, so it can contains number error.

• If n is power of two, then n - 1 that has all unset bits of n becomes set bits of n - 1, vice versa.

For example: 4 = 100, then 3 = 011

## Divide an integer number to 2

``````public boolean isPowerOfTwoUsingIterative(long n) {
if (n == 0) {
return false;
}

while (n != 1) {
if (n % 2 != 0) {
return false;
}

n = n / 2;
}

return true;
}
``````

## Using log method of Math package

``````public boolean isPowerOfTwoUsingLogMath(long n) {
if (n == 0) {
return false;
}

long log2 = log2(n);
return Math.ceil(log2) == Math.floor(log2);
}

public long log2(long x) {
return (long) (Math.log(x) / Math.log(2) + 1e-10);
}
``````

## Based on the property of n and n-1

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