使用Java语言编写程序来判断一个整数是不是2的阶次方数,要求使用尽量快速简便的方法。
答:如果一个数是2的阶次方数,那么它的二进制数的首位一般是1,后面接若干位0。比如8就是1000,64是1000000。如果将这个数减1再与该数做&运算,则应该全部位都是0。所以如果一个数d,满足d&(d-1)==0,则这个数必定是可以被2的幂整除的数。
答:如果一个数是2的阶次方数,那么它的二进制数的首位一般是1,后面接若干位0。比如8就是1000,64是1000000。如果将这个数减1再与该数做&运算,则应该全部位都是0。所以如果一个数d,满足d&(d-1)==0,则这个数必定是可以被2的幂整除的数。
import java.util.Scanner;
public class Valid {
public static boolean doValid(int Number){
if((((Number-1)&Number)==0)&&Number!=0){
return true;
}
return false;
}
public static void main(String[] args){
Scanner s = new Scanner(System.in);
System.out.print("Input a number : ");
boolean result = Valid.doValid(s.nextInt());
if(result){
System.out.println("可以被2的幂整除!");
}else{
System.out.println("不可以被2的幂整除!");
}
}
}

本文介绍使用Java语言编写程序,通过简单高效的算法判断一个整数是否能被2的幂整除,即是否为2的阶次方数。通过将数减1与自身进行按位与操作,若结果全为0,则说明该数是2的阶次方数。
627

被折叠的 条评论
为什么被折叠?



