思路:2的整数次方为1,2,4,8······,通过发现将其转化为二进制数,每个数都只有一个数字1。把这个整数减去1,再和原整数作与运算为0。其中还增加了将十进制转化二进制的算法。
代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String a = Integer.toBinaryString(n-1);
String b = Integer.toBinaryString(n);
if(((n-1)&n)==0){
System.out.println("这是2的次方"+"\n"+"n的二进制为:"+b);
}else{
System.out.println("这不是2的次方"+"\n"+"n-1的二进制为:"+a+"\n"+"n的二进制为:"+b);
}
}
}
输入格式:22
输出格式:
这不是2的次方
n-1的二进制为:10101
n的二进制为:10110