转自 http://blog.csdn.net/sanqima/article/details/35283683
判断一个整数是否是2的阶次方数
原理:
2的阶次方数用二进制表示为:1开头,其后是若干个0
当我们需要判断一个整数是否是2的阶次方时,只需要将该整数减去1后,和该整数做位于(&)运算
若结果为0,则成立,否则就不是
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while(true){
System.out.print("\n请输入一个整数(0退出):");
int input = scan.nextInt();
if(input == 0){
System.out.println("已退出");
break;
}
if((input & (input-1))==0 && input != 0){
System.out.print(" 是2的阶次方数");
}else{
System.out.print(" 不是2的阶次方数");
}
}
scan.close();
}