给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。
整数 n 是 4 的幂次方需满足:存在整数 x 使得 n = 4 x n = 4^x n=4x。
题解:
对于这题我们可以采用位运算的思路。任取一个数,假如该数是 4 的 n 幂次方,则转换成二进制表示形式可知,必定为 1,100,10000等形式,即第 2*n+1 位 为 1,其余位均为0。
代码如下
class Solution {
public boolean isPowerOfFour(int n) {
int oneCnt = 0;
for(int i=0;i<32;i++){
//如果该数最后一位为1
if((n&1)==1){
if(i%2==1){
return false;
}else{
//判断1的个数
oneCnt++;
}
}
n=n>>1;
}
return oneCnt == 1;
}
}