判断一个数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; }