判断一个数是不是是2的幂的快速方法

判断一个数是否是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的幂整除!");
                }
        }

}