普通思路:拿这个数一直除以2,判断余数是否一直为0,直到这个数变为1.
代码:
public static boolean method1(int n){
while(n!=1){
if(n%2!=0)
return false;
n=n/2;
}
return true;
}
高阶思路:利用位运算,如果一个整数n是2的整数次幂,那么n&(n-1)必为0,反过来,如果n&(n-1)为0,那么n必为2的整数次幂。
举例 4 100&011=0 8 1000&0111=0
代码:
public static boolean method2(int n){
return (n&(n-1))==0;
}