2的幂次方

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