剑指offer:面试题10:——二进制中1的个数
题目:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
//每次把n-1,由于进制特点,会向最右侧的非零位的1借位,然后从这位开
//始,0变1,1变0,将原来的数字和减一后的数字相与可以知道当前最右侧有
//一个非零位,循环直到这个数减为0可以得到该数中共有几个1,有几个1循环//几次
class Solution {
public:
int NumberOf1(int n) {
int count=0;
// if(n<0)
// {
while(n)
{
count++;
n=(n-1)&n;
}
return count;
// }
}
};