乘方数"/>
记录一个算法题(java代码):判断整数是不是2的乘方数
package ludims.main;
import java.util.Scanner;
public class Compute2Power {
public static void main(String[] args) {
System.out.println("判断整数是不是2的乘方数"); //题干
Scanner in =new Scanner(System.in); //声明一个Scanner对象,接收键盘输入内容
System.out.println("请输入一个整数:"); //提示输入数据
while(in.hasNextLong()) {
long num = in.nextLong(); //取得输入的整数,并赋值给num
if((num & (num-1)) == 0) { //此句为算法关键语句
/********此处涉及算法问题,**************
2的乘方数二进制的写法都是:
1 2的0次方
10 2的1次方
100 2的2次方
1000 2的3次方
10000 2的4次方
1000 0000 2的7次方
......
而2的乘方数减一会变成:
0 2的0次方减一
1 2的1次方减一
11 2的2次方减一
111 2的3次方减一
1111 2的4次方减一
111 1111 2的7次方减一
......
故2的乘方数与其减一后的数进行位与计算结果为0
************************************/
System.out.println(num + " 是 2的乘方数!"); //输出判定成功结果
}else {
System.out.println(num + " 不是 2的乘方数!"); //输出判定失败结果
}
System.out.println("请再输入一个整数:"); //提示再输入数据,循环
}
System.out.println("输入格式不对,程序结束!"); //程序结束提示
in.close(); //关闭Scanner
}
}
更多推荐
记录一个算法题(java代码):判断整数是不是2的乘方数
发布评论