判断一个数n是不是2的幂次方
方法1:n除以2 余数是0 剩余除数再除以2 知道除数为0,如果余数一直是0则true;
public static Boolean getResult(Integer n){
if(n==2){
return true;
}else if(n==1){
return false;
}else{
if(n%2!=0){
return false;
}else{
return getResult(n/2);
}
}
}
方法2:二进制
二进制中 2的幂次方都是1后面全是0的形式 如16 10000;所以n&(n-1)==0可以判断是否为这种形式的二进制;
public static Boolean getResult(Integer n){
return (n&(n-1))==0;
}
来源:https://www.cnblogs.com/xiatc/p/12371919.html