题目内容
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.
Follow up: Could you solve it without loops/recursion?
题目分析
先判断是不是2 的冥,如果num是2的冥,则对num-1,得到的数进行为运算,&1操作,计数有多少个1,因为判断是不是4的冥。所以计数和mod 2 即可。如果是8的冥的话,mod 3 即可。
4=0100,4-1=0011。
public class Solution {
public boolean isPowerOfFour(int num) {
if(num<1) return false;
if(num==1) return true;
int count=0;
if(0==((num-1)&num)){
for(int i=0;i<32;i++)
{
if((((num-1)>>i)&1)==1) count++;
}
if(count%2==0) return true;
return false;
}
return false;
}
}