判断一个数为2的整数次幂
2021-05-16 本文已影响0人
CXY_XZL
方法一
解题思路:一个数为2的整数次幂,那么它必将被2整除
代码如下:
public static boolean isPowerOf2(){
int temp = 1;
while(temp<=num){
if(temp == num){
return true;
}
temp = temp * 2;
}
return false;
}
public static void main(String[] args){
System.out.println(isPowerOf2(32));
System.out.println(isPowerOf2(33));
}
以上算法时间复杂度为O(logn),但还有更好的办法,如下:
方法二
解题思路:8为2的整数次幂,转换为二进制为1000,在二进制的基础上减一后结果是111,而1000 & 111 在位运算中结果为0,总结如下表:
![](https://img.haomeiwen.com/i17070225/02616b26f1fe14ca.png)
代码如下:
public static boolean isPowerOf2(int num){
return (num&num-1) == 0;
}
补充:此方法时间复杂度为O(1)