第一种思路就是拿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中的位运算符复习下了!
本文介绍了三种判断一个整数是否为2的幂次方的有效方法。第一种方法通过不断乘以2来比较,第二种方法使用位左移操作进行优化,第三种方法利用位运算符实现快速判断。这三种方法各有优劣,适用于不同的场景。
5480

被折叠的 条评论
为什么被折叠?



