算法题:判断一个整数是不是2的整数次幂

普通思路:拿这个数一直除以2,判断余数是否一直为0,直到这个数变为1.

代码:

public static boolean method1(int n){
        while(n!=1){
            if(n%2!=0)
                return false;
            n=n/2;
        }
        return true;
    }

高阶思路:利用位运算,如果一个整数n是2的整数次幂,那么n&(n-1)必为0,反过来,如果n&(n-1)为0,那么n必为2的整数次幂。
举例 4 100&011=0 8 1000&0111=0

代码:

public static boolean method2(int n){
        return (n&(n-1))==0;
    }

你可能感兴趣的:(算法题:判断一个整数是不是2的整数次幂)