Problem
Given an integer (signed 32 bits), write a function to check whether it is a power of 4.
Example:
Given num = 16, return true. Given num = 5, return false.
Solution
常规解法
class Solution {
public:
bool isPowerOfFour(int n) {
if(n>0)
while(n%4 == 0)
n/=4;
return n == 1;
}
};
位运算
分别判断n是否是2的幂
以及(n-1)能否被3整除
class Solution {
public:
bool isPowerOfFour(int n) {
return n>0 && !(n&(n-1)) && !((n-1)%3);
}
};