剑指Offer——二进制中1的个数

By AverageJoeWang
 标签:

二进制中1的个数

  • 题目描述

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

  • 解题思路

JAVA语言规范中,int整形占四个字节,总计32位,对每一个位置与1进行求与操作,再累加就可以求出当前数字的表示是多少位1

  • 代码实现
public class Solution {
    public int NumberOf1(int n) {
        int count = 0;
        while (n != 0){
            ++count;
            n = (n-1) & n;
        }
        return count;
    }
}