不使用Integer.toBinaryString计算一个整数转成二进制之后1的个数

如题,在不使用Integer.toBinaryString的情况下,如何计算一个整数中1的个数?
跑偏的解法:考虑十进制转二进制的思路,通过除以2取余的思路,正数和0可以解决,负数是补码表示所以难以实现。
正确的解法:通过与运算(&)和无符号右移(>>>)运算来实现。注意不能是带符号的右移。
直接放代码:

public class Demo01 {
    public static void main(String[] args) {
        Demo01 demo01 = new Demo01();
        int num = -128;
        String str = Integer.toBinaryString(num);
        System.out.println(str+"中1的个数为:"+demo01.solution(num));
    }

    public int solution(int num){
        int count=0;
        while(num!=0){
            if ((num&1)==1){//与1相与结果为1的话说明最后一位是1,否则的话为0
                count++;
            }
            num=num>>>1;
        }
        return count;
    }
}

显示结果:

111111111111111111111111100000001的个数为:25

Process finished with exit code 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值