判断一个数是否是2的幂数:
分析:两种思路①一直除2判断余数如果最后余数是1肯定是2的幂数
②按位与运算,一个数x如果是2的幂数,那么x的二进制里只有一个1,x-1二进制最高位变成了0,其他位就都是1,与x按位与运算结果为o的话就是2的幂数。
java:①
class Solution {
public boolean isPowerOfTwo(int n) {
if(n==0)
return false;
else if(n==1)
return true;
else
{
while(n%2==0&&n/2!=0)
{
n=n/2;
}
if(n==1)
return true;
else
return false;
}
}
}
②:第二种思路
java:
class Solution {
public boolean isPowerOfTwo(int n) {
int maxint=2147483647;//考虑是否溢出
int minint=-2147483647;
if(n==0)
return false;
else
{ if(n<minint||n>maxint)
return false;
else
return((n&(n-1))==0);
}
}
}