2 的整次幂
    实现一个方法,来判断一个正整数是否是 2 的整数次幂(如16是2的4次方,返回true;18不是2的整数次幂,则返回false)。要求性能尽可能高。


    对于一个整数 n ,只需要计算 n &(n -1)的结果是不是 0。这个方法的时间复杂度只有O (1)。
    image.png
    0 和 1 按位与运算的结果是 0,所以凡是 2 的整数次幂和它本身减 1 的结果进行与运算,结果都必定是 0。反之,如果一个整数不是 2 的整数次幂,结果一定不是 0!

    1. public static boolean isPowerOf2(int num) {
    2. return (num & num - 1) == 0;
    3. }