给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。
示例 1:
输入: 16
输出: true
示例 2:
输入: 5
输出: false
理论上数字4幂的二进制类似于100,10000,1000000,etc…形式。可以有如下结论:
4的幂一定是2的。
4的幂和2的幂一样,只会出现一位1。但是,4的1总是出现在奇数位。
0x5 = 0101b可以用来校验奇数位上的1。
代码:
class Solution {
public boolean isPowerOfFour(int num) {
return (num&0x55555555)!=0&&(num&(num-1))==0;
}
}