In this tutorial, we will see how to check if number is power of two.

There are many approaches to check if number is power of two or not.

Let's say n is 8. Its binary representation will be : 1000.

binary represetation of 7 will be : 0111.

1 0 0 0

& 0 1 1 1

----------

0 0 0 0

----------

If number is power of 2, then it will have only one bit set to "1".

For example:

8 : 1000

32 : 100000

Similarly when you check binary form of 7 and 31, it will have all the bits set to "1"

7 : 111

31: 11111

so if you apply bitwise & operator on n and n-1 and result is 0. It means number is power of two.

There are many approaches to check if number is power of two or not.

### Approach 1:

It is very easy and straight forward approach.- Run a while loop which checks for condition if n is even number (n%2==0).
- If n is even then divide it by 2 in each iteration.
- When you get out of while loop and n is equal to 1 then number is power of two,
- If number is not equal to 1 then number is not power of two.

public static boolean powerOfTwoGeneral(int n) { while(n%2==0) { n=n/2; } if(n==1) { return true; } else { return false; } }

### Approach 2:

We can use bitwise and operator to check if number is power of two or not.public static boolean powerOfTwoBitwise(int n) { return (n & n-1)==0; }It will a very simple way to check if number is power of two. Let's see how it works.

Let's say n is 8. Its binary representation will be : 1000.

binary represetation of 7 will be : 0111.

1 0 0 0

& 0 1 1 1

----------

0 0 0 0

----------

If number is power of 2, then it will have only one bit set to "1".

For example:

8 : 1000

32 : 100000

Similarly when you check binary form of 7 and 31, it will have all the bits set to "1"

7 : 111

31: 11111

so if you apply bitwise & operator on n and n-1 and result is 0. It means number is power of two.

### Java program to check if number is power of two:

package org.arpit.java2blog; public class PowerOfTwoMain { public static void main(String[] args) { System.out.println("128 is power of two : "+powerOfTwoGeneral(128)); System.out.println("64 is power of two : "+powerOfTwoBitwise(64)); System.out.println("22 is power of two : "+powerOfTwoBitwise(22)); System.out.println("22 is power of two : "+powerOfTwoGeneral(22)); } // Approach 1 public static boolean powerOfTwoGeneral(int n) { while(n%2==0) { n=n/2; } if(n==1) { return true; } else { return false; } } // Approach 2 public static boolean powerOfTwoBitwise(int n) { return (n & n-1)==0; } }When you run above code, you will get below results

128 is power of two : true 64 is power of two : true 22 is power of two : false 324 is power of two : false