1,while(n>1){
n%2==0;//不等于0,肯定不是,等于0及,
n=n/2;
}
2,位运算
1: 01
2:10
3: 011
4: 100
7: 0111
8: 1000
判断方法
if(n&(n-)==0) 是 否则 不是
代码
/**
* 高效率和低内存
* 判断一个数是否是2的N次方
*/
public class ACM2N {
/**
* 1: 01
* 2:10
* 3: 011
* 4: 100
* 7: 0111
* 8: 1000
* 判断方法
* if(n&(n-)==0) 是 否则 不是
*
* @param n
* @return
*/
public static boolean bitProcess(int n) {
if ((n & (n - 1)) == 0) {
return true;
} else {
return false;
}
}
/**
* while(n>1){
* n%2==0;//不等于0,肯定不是,等于0及,
* n=n/2;
* }
*
* @param n
* @return
*/
public static boolean divisionProcess(int n) {
while (n > 1) {
if (n % 2 == 0) {
n = n / 2;
System.out.println(n);
} else {
break;
}
}
return n == 1 ? true : false;
}
public static void main(String[] args) {
System.out.println(bitProcess(555));
System.out.println(divisionProcess(555));
System.out.println(bitProcess(1024));
System.out.println(divisionProcess(1024));
}
}