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;
    }

 

posted @ 2020-02-27 14:15  超超小仙女  阅读(436)  评论(0编辑  收藏  举报