/***
* 实现一个方法,来判断一个正整数是否是2的整数次幂
*/
public class ISPowerOfTwo {
/**
* 创建一个中间变量temp 初始值为1,然后进入一个循环,每次循环都让temp和目标函数
* 比较,如果相等,则说明目标函数是2的整数次幂,如果不相等,则让temp增大1倍。
* 继续循环并进行比较,当temp的值大于目标函数时,说明目标函数不是2的整数次幂
* @param num
* @return
*/
public static boolean isPowerOf2V1(int num){
int temp=1;
while(temp<=num)
{
if(temp==num)
return true;
temp=temp<<1;
}
return false;
}
/**
* 一个整数是2的整数次幂,那么当它转化成二进制时,只有最高位是1,其他位都是0
* 我们利用如果一个数字n是二进制,那么n-1的二进制位应该全部是1.
* 所以n&(n-1)的结果是0。
* 故判断一个是不是2的整数次幂,可以采用n&(n-1)是不是等于0的方式
* @param num
* @return
*/
public static boolean isPowerOfV2(int num){
return (num&num-1)==0;
}
public static void main(String[] args) {
System.out.println(isPowerOfV2(32));
System.out.println(isPowerOfV2(19));
}
}
判断一个数是不是2的整数次幂
最新推荐文章于 2022-01-11 17:47:14 发布