[编程题] lk [231. 2的幂]

[编程题] lk 231. 2的幂

题目

image-20200730201535269

输入输出

image-20200730201544439

方法1:位运算

//方法3:使用位运算消除1
    /*思想:如果是2的n次方,那么它的二进制肯定是0000000100000这种样子,其中是只有一个1(有可能是0000001),我们用位运算消除一次,看能否消除为0,就判断是否是2的幂次方*/
     public boolean isPowerOfTwo1(int n) {
         return n>0 && (n & (n-1))==0;
    }

方法2:循环取模

 //一直模2
    public boolean isPowerOfTwo(int n) {
        if(n==0) {return false;}
        while(n%2==0){
            n = n/2;
        }
        return n==1;
    }

猜你喜欢

转载自www.cnblogs.com/jiyongjia/p/13406186.html