任给一个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;
}