Find whether a given number is a power of 4 or not
Use Bitwise Operation
a) There is only one bit set in the binary representation of n (or n is a power of 2)
b) The count of zero bits before the (only) set bit is even.
Use Bitwise Operation
a) There is only one bit set in the binary representation of n (or n is a power of 2)
b) The count of zero bits before the (only) set bit is even.
bool
isPowerOfFour(unsigned
int
n)
{
int
count = 0;
/*Check if there is only one bit set in n*/
if
( n && !(n&(n-1)) )
{
/* count 0 bits before set bit */
while
(n > 1)
{
n >>= 1;
count += 1;
}
/*If count is even then return true else false*/
return
(count%2 == 0)? 1 :0;
}
/* If there are more than 1 bit set
then n is not a power of 4*/
return
0;
}
1. A simple method is to take log of the given number on base 4, and if we get an integer then number is power of 4.
2. Another solution is to keep dividing the number by 4, i.e, do n = n/4 iteratively. In any iteration, if n%4 becomes non-zero and n is not 1 then n is not a power of 4, otherwise n is a power of 4.
Read full article from Find whether a given number is a power of 4 or not | GeeksforGeeks