判断一个数是否是2的幂的快速方法
使用Java语言编写程序来判断一个整数是不是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的幂整除!"); } }}