给你一个整数 n,请你判断该整数是否是 2 的幂次方。

给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。

/*
给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。
*/
public class Test1_ThePowerOf2 {
    public static void main(String[] args) {
        while (true){
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入想输入的数字:");
//            boolean b = Test1.judgeNumber(scanner.nextInt());
//            boolean b = Test1.funV1(scanner.nextInt());
            boolean b = Test1_ThePowerOf2.funV2(scanner.nextInt());
            if (b){
                System.out.println("输入的数字为2的次幂:"+b);
            }else{
                System.out.println("输入的数字不为2的次幂:"+b);
            }
        }
    }
    public static boolean judgeNumber(int number){
        int flag=0;
        if (number==1){
            return true;
        }else{
            if (getResult(number,flag)){
                return true;
            }
            return false;
        }

    }
    public static boolean getResult(int number,int flag){
        if (number == 0){
            return false;
        }
        while(number%2==0){
            number = number/2;
            flag = number%2;
            if (flag==0&&number==2||flag==1&&number==1){
                return true;
            }
        }
        return false;
    }



    public static boolean funV1(int a) {
        int temp=1; //迭代变量,从1开始
        while(temp <= a){
            if(temp == a) {  //当temp等于目标值就返回true
                return true;
            }
            temp *= 2; //2次幂增长
        }
        return false; //没找到返回false
    }

    public static boolean funV2(int n){
        return n > 0 && (n & (n - 1)) == 0;
    }
}

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值