题目大意:判断一个整数num是不是4的指数,不用循环和递归的情况下。
思路:(借鉴)
4指数的整数的二进制表示只有1个1.其他全为0,于是num&(num-1)=0
4^n可以分解为3*(4^0+4^1+4^2...+4^(n-1)),于是(num-1)%3=0,貌似这一步可以更优化,采用位运算代替取模。
code:
bool isPowerOfFour(int num) {
return num > 0 && (num & (num - 1)) == 0 && (num - 1) % 3 == 0;
}