判断一个数是否为2的n次方,最简单的方法是利用位运算。
废话就不多说了,直接上代码吧,代码中有我的注释。
/**
* 判断一个数是否是2 的n次方
*
* 我们观察,2,4,8,。。的二进制有如下特点:
* 10,100,1000。。。
* 将二进制数字减去1,就可以得到:
* 01,010,0111....
* 那么就可以将该数字n与n-1做与运算,等于0
* 就可以判断该数字是2的n次方
*
*
* @Author lrf
* @Date 2019/05/27 22:24:36
* @Version 1.0.0
**/
public class Is2Power {
private static boolean isPower(int n) {
// 如果小于1,直接返回false
if (n<1) return false;
return (n&(n-1))==0;
}
public static void main(String[] args) {
System.out.println("1是否是0的n次方:"+isPower(1));
System.out.println("2是否是0的n次方:"+isPower(2));
System.out.println("3是否是0的n次方:"+isPower(3));
System.out.println("4是否是0的n次方:"+isPower(4));
}
}