输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
class Solution {
public:
int NumberOf1(int n) {
if(n==0) return 0;
// 每次清除一位的0
int cnt=0;
while(n) {
n = n&(n-1);
cnt++;
}
return cnt;
}
};
减1的话一定会导致原数据有一位上的1变成0,直接取与操作会将该位置0.
原文:https://www.cnblogs.com/xl2432/p/10930108.html