描述
输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。
示例1
输入: 10
返回值: 2
思路
n & n - 1 : 消去数字 n 最右边的 1
二进制数:val :1101000, val-1: 1100111
那么val &(val-1) : 1100000
代码:
public class Solution {
public int NumberOf1(int n) {
int res = 0;
while(n != 0) {
n = n & (n-1);
res++;
}
return res;
}
}