第一种思路就是拿2*2*2...*2是否等于某个值,这样也可以判断
public static boolean isPowerOfTwo(int n) {
if(n<=0){
return false;
}
int temp = 1;
while (temp<=n){
if(temp==n){
return true;
}
temp*=2;
}
return false;
}
第二种算是在第一种的基础上做了些优化, 但是要知道位运算符.其实就是优化这段代码,temp*=2,使用<<
public static boolean isPowerOfTwo(int n) {
if(n<=0){
return false;
}
int temp = 1;
while (temp<=n){
if(temp==n){
return true;
}
temp=temp<<1;
}
return false;
}
第三种方法是网上看到的,
public static boolean isPowerOfTwo(int n) {
return n > 0 && (n & (n - 1)) == 0;
}
要把Java中的位运算符复习下了!