知识点
原码:数字n的二进制表示 n = 1010
反码:将原码取反 ~n = 0101
补码:将反码+1 = ~n+1 ~n+1 = 0110 和原码加起来 = 10…0
java代码 (直接用lowbit = n >> i & 1来做就可以了)
class Solution {
public int NumberOf1(int n)
{
if(n < 0) n = ~(-n) + 1;
int res = 0;
for(int i = 0; i < 32; i ++)
if((n >> i & 1) == 1) res ++;
return res;
}
}