题目大意:判断整数是否是4的幂次方
分析:位运算。在leetcode231的基础上,num是2的幂次方需要满足二进制最高位为1其余都是0,也就是(num & (num - 1)) == 0,而4的幂次方是就是2的偶数幂次方,也就是最高位的1在偶数位上(0、2、4...位),所以num&(101010...10)应该为0,二进制(101010...10)对应十六进制0xaaaaaaaa。
代码:
class Solution {
public:
bool isPowerOfFour(int num) {
return num > 0 && !(num & (num - 1)) && !(num & 0xaaaaaaaa);
}
};