public class 判断整数是不是2的整数次方 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); //特征:如果 n 是 2 的整数次方,那么n的二进制数就是只有 1 个 1 ,其余的都是 0 //法一:判断每一位是否等于1,如果等于1就+1,最后看看次数是不是1 int count = 0; for (int i = 0; i < 32; i++) { if (((n>>i)&(1))==(1)){ count++; } } if(count==1){ System.out.println("该数是2的整数次方"); }else{ System.out.println("该数不是2的整数次方"); } //法二:因为二进制只有1,n-1=0000,如果 n-1 & n ==0,那么就是只有1个1 int count1=0; if(((n-1)&n)==0){ System.out.println("该数是2的整数次方"); }else{ System.out.println("该数不是2的整数次方"); } } }