1,题目要求
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
2,题目思路
对于这道题,要求求一个数字二进制表示中的1的个数。
直观的思路是res += n&1; n>>1;这种,但是时间复杂度太高,会超时,不可行。
一般来说,这种问题固定方法:
计算一个数字中二进制为1的个数:
int bitsNum = 0;
while(n)
{
bitsNum++;
n = n & (n-1);
}
3,代码实现
class Solution {
public:
int NumberOf1(int n) {
int res = 0;
while(n){
res++;
n = n&(n-1);
}
return res;
}
};