题目:输入一个数如果是2的整数次方测试输出ture,反之输入false。
题目分析:如果一个数是2的整数次方,那么他的二进制中只有一个1。
例如:
2化为2进制数:10
4化为2进制数:100
8化为2进制数:1000
- 首先先把输入的数化为2进制数
- 然后判断此数中是不是只有一个1
代码如下:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int sum = 0; // 累加出现1的次数
String str = Integer.toString(n,2); // 转换为2进制
char[] chars = str.toCharArray(); // 将字符串转换为字符数组,便于遍历
for (int i = 0; i < chars.length; i++) {
if (String.valueOf(chars[i]).equals("1")){ // 遍历每次数是否为1
sum++;
}
}
if (sum==1){ // 如果只有一个1就是2的整数次方
System.out.println(true);
}else {
System.out.println(false);
}
}