题目:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
思路:每次循环统计二进制中最后一个1,再把这个1去掉num&(num-1)这个操作,可以 ,每次都把当前统计的1去掉,直到原数字变成0
#include<iostream>
using namespace std;
class Solution {
public:
int NumberOf1(int n) {
int count = 0;
while (n) {
++count;
n = (n - 1)&n;
}
return count;
}
};
int main(){
Solution s;
cout<<s.NumberOf1(-2)<<endl;
return 0;
}