Java左移动右移动。二进制特点

任给一个int类型的正整数,如何判断该整数的值,是否是2的整数次幂?(考虑该种数的二进制特点)

是这样的,可以通过位运算比较快速的算出来结果:

/**
 * 判断 data 是不是2的整数次幂
 *
 * @param data 要判断的数
 * @return 如果是,则返回true,否则返回false
 */
public static boolean isPowerOf2(int data) {
    int tmp = 2;
    while (tmp <= data) {
        tmp <<= 1;
        if (tmp == data) {
            return true;
        }
    }
    return false;
}