二进制中1的个数

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
* 考虑有负数的存在,右移操作应该采用无符号右移,即高位通过0补齐。
* 同时,只要n=0,就可以结束循环了。
**/
public class Solution {
public int NumberOf1(int n) {
int num = 0;
while (0 != n) {
num += n & 1;
n = n >>> 1;
}
return num;
}
}