求二进制中1的个数
输入:一个 32 位整数
输出:该数二进制表示中 1的个数。
解法一:
#include <bits/stdc++.h>
class Solution {
public:
int NumberOf1(int n) {
bitset <32> b;
b = n;
return b.count();
}
};
解法二:
class Solution {
public:
int NumberOf1(int n) {
int count = 0;
while(n) n -= n & -n, count++;
return count;
}
};
解法三:
class Solution {
public:
int NumberOf1(int n) {
int count = 0;
for (int i = 0; i < 32; i++) {
if(n >> i & 1)
count ++;
}
return count;
}
};