# Tips! Determine whether a number is a power of 4?

Posted Jun 15, 20201 min read

Long-lost Double Hundred, QAQ
Leetcode-342

The topic said that you should not use loops or recursion as much as possible, so I thought of the previous judgment about whether a number is a power of two, so let's see if there is any similarity.

A power of 4 must be a power of 2, but the reverse is not true. For example, 8 is the power of 2, but not the power of 4.

1 converted to 2 hexadecimal is 1;
4 converted to 2 hexadecimal is 100;
6 converted to 2 hexadecimal is 110;
8 converted to 2 hexadecimal is 1000;
Converting 16 to 2 is 10000;

To determine whether a number is a power of 2, we have to see whether the number of digits is only 1 after the number is converted to binary.
The law of the power of 4 is to see whether all digits are only 1 after the number is converted to binary, and this 1 can only appear on odd digits.

code:

``````class Solution {
public:
bool isPowerOfFour(int num) {
if(num == 1) return true;
if(num <= 3) return false;
int count = 0;
int i = 1;
while(num != 0){
if((num&1) != 0 &&(i&1) != 0){
count++;
}
if((i&1) == 0 &&(num&1) != 0){
return false;
}
num>>=1;
i++;
}
if(count == 1)
return true;
return false;
}
};``````

This kind of solution is definitely more labor-saving than the loop method.