 GFG App
Open App Browser
Continue

# JavaScript program to check whether a given number is power of 2

Given a positive integer n, write a function to find if it is a power of 2 or not

Examples:

```Input: n = 4
Output: Yes
Explanation: 22 = 4

Input: n = 32
Output: Yes
Explanation: 25 = 32
```

To solve the problem follow the below idea:

A simple method for this is to simply take the log of the number on base 2 and if you get an integer then the number is the power of 2

Example: Below is the implementation of the above approach:

## Javascript

 ` `

Output:

```No
Yes
```

Time Complexity: O(1).
Auxiliary Space: O(1).

#### Find whether a given number is a power of 2 using the division operator:

To solve the problem follow the below idea:

Another solution is to keep dividing the number by two, i.e, do n = n/2 iteratively. In any iteration, if n%2 becomes non-zero and n is not 1 then n is not a power of 2. If n becomes 1 then it is a power of 2.

Example 1: Below is the implementation of the above approach:

## Javascript

 ` `

Output:

```No
Yes
```

Time Complexity: O(log N).
Auxiliary Space: O(1).

Example 2: Below is the recursive implementation of the above approach:

## Javascript

 ` `

Output:

```True
False
```

Time Complexity: O(log N).
Auxiliary Space: O(log N).

#### Find whether a given number is a power of 2 by checking the count of set bits:

To solve the problem follow the below idea:

All power of two numbers has only a one-bit set. So count the no. of set bits and if you get 1 then the number is a power of 2. Please see Count set bits in an integer for counting set bits.

Example: Below is the implementation of the above approach:

## Javascript

 ` `

Output:

```No
Yes
```

Time Complexity: O(N).
Auxiliary Space: O(1).

#### Find whether a given number is a power of 2 using the AND(&) operator:

To solve the problem follow the below idea:

If we subtract a power of 2 numbers by 1 then all unset bits after the only set bit become set, and the set bit becomes unset.
For example for 4 ( 100) and 16(10000), we get the following after subtracting 1
3 –> 011
15 –> 01111

So, if a number n is a power of 2 then bitwise & of n and n-1 will be zero. We can say n is a power of 2 or not based on the value of n&(n-1). The expression n&(n-1) will not work when n is 0. To handle this case also, our expression will become n& (!n&(n-1))

Example: Below is the implementation of the above approach:

## Javascript

 ` `

Output:

```No
Yes
```

Time Complexity: O(1).
Auxiliary Space: O(1).

#### Find whether a given number is a power of 2 using the AND(&) and NOT(~) operators:

To solve the problem follow the below idea:

Another way is to use the logic to find the rightmost bit set of a given number and then check if (n & (~(n-1))) is equal to n or not

Example: Below is the implementation of the above approach:

## Javascript

 ` `

Output:

```No
Yes
```

Time Complexity: O(1).
Auxiliary Space: O(1).

#### Find whether a given number is a power of 2 using Brian Kernighan’s algorithm:

To solve the problem follow the below idea:

As we know that the number which will be the power of two have only one set bit, therefore when we do bitwise AND with the number which is just less than the number which can be represented as the power of (2) then the result will be 0.

Example: 4 can be represented as (2^2 ),
(4 & 3)=0 or in binary (100 & 011=0)

Example: Below is the implementation of the above approach:

## Javascript

 `

Output:

```No
Yes
```

Time Complexity: O(1).
Auxiliary Space: O(1).

My Personal Notes arrow_drop_up