此题中我运用了一个n&(n-1),这个语句的作用就是将n变成2的倍数,每进行一次这样的运算,总会将一个二进制中的1抵消掉.
如n=12 1100 n-1=11 1011
1100&1011 = 1000
1000&0111 = 0000
#include "iostream"
#include "stdio.h"
using namespace std;
class Solution {
public:
int NumberOf1(int n) {
int count = 0;
while(n!= 0){
count++;
n = n & (n - 1);
}
return count;
}
};
int main()
{
Solution test;
int result;
result = test.NumberOf1(-1);
cout<<result<<endl;
return 0;
}