• 00010.二进制中1的个数
  • 发布于 1个月前
  • 41 热度
    0 评论

题目描述:

输入一个整数,输出该二进制表示的1的个数,负数用反码表示。


解题思路:

判断1的个数。所以第一反应就是逐位去判断每一位是否是1。所以怎样去寻找每一位就是麻烦了。这里说明和1相关,二进制表示说明这个数字中只有1和0。1和0的关系我们就只能想到位运算。这里采取的是&运算。相同为1否为0.所以我们可以去让这个target &(target - 1)一直做循环。循环的判断条件是这个数字不等于0即可。运算的次数则代表了1的个数。最后这个数字就会变为0。所以我们做一个计数器即可。这个计数器的大小代表着二进制数字中1的个数


图片解说:


代码展示:

public class Solution {
    public int NumberOf1(int target) {
        //计数器
        int count = 0;
        //做循环计算1的个数
        while(0 != target) {
            ++count;
            target = target &(target - 1);
        }
        return count;
    }
}

用户评论