判断一个数是不是2的阶次方数

思路:2的阶次方数二进制的形式首位都是1,比如8的二进制为1000,4的二进制为100,如果把这个数减去1,再与该数做与(&)运算,结果一定是全0.比如8-1=7 7的二进制为111, 8&7=0000 4-1=3,3的二进制为11,3&4=000
所以我们可以通过这种判断一个数是不是2的阶次方数

public class Demo {
    //从键盘输入的类
    private static String s = "";

    public static void Input() {//从键盘输入一行字符保存在s中
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        try {
            s = bf.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static int getInt() {//把字符串类型转化为整型
        Input();
        return Integer.parseInt(s);
    }

    static class Result {
        public void print(int d) {
            if (((d - 1) & (d)) == 0 && (d != 0)) {
                System.out.println(d + "是2的阶级次方数");
            }else {
                System.out.println(d+ "不是2的阶次方数");
        }
    }

}


    public static void main(String[] args) {
        Result result=new Result();
        System.out.println("请输入一个整数: ");
        int a=Demo.getInt();
        result.print(a);
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值