NO11、二进制中1的个数
题目描述
输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。
示例1:
输入
10
输出
2
解法1:
class Solution {
public:
int NumberOf1(int n) {
int count=0;
while(n!=0){
count++;
n=n&(n-1);
}
return count;
}
};
解法2
class Solution {
public:
int NumberOf1(int n) {
return bitset<32>(n).count();
}
};
bitset用法
主要是将 n 转化为 32位表示,int 最大也就是 2^32次方,然后利用bitset.count()函数,返回 其中 1 的数量
bitset<4> bitset1; //无参构造,长度为4,默认每一位为0
bitset<8> bitset2(12); //长度为8,二进制保存,前面用0补充