我们观察2的整数幂 换成二进制都有一个规律 如下:
2 -> 0000 0010 4 -> 0000 0100 8 -> 0000 1000
2-1= 1 -> 0001 4-1=3 -> 0011 8-1=7 -> 0111
这时我们 用 n & (n -1) 会发现结果都为0 故此我们的代码就出来了:
n & (n - 1) == 0 :如果为true的话 就表示为整数幂 否则不是
import java.util.Scanner;
/*
* 用一条语句判断一个整数是不是2的整数次方
*/
public class 二的整数次方 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个整数");
int N=sc.nextInt();
if(((N-1)&N)==0){
System.out.println("是二的整数次方");
}else {
System.out.println("不是二的整数次方");
}
}
}