小例子
n的而进制第k位
- 右移k位 n>>=k
- n&1 得到最后一个1
lowbit(x): 返回x的最后一位
// x的最低位的1所对应的10进制值
x & -x;
801. 二进制中1的个数
- 一个直接的想法?转成二进制的串,数1的个数?
- 借助lowbit
int lowbit(int x)
{
return x & -x;
}
int main()
{
int n;
cin >> n;
//1. n个数的处理方法,每次处理一个呗
while (n --)
{
int x;
cin >> x;
int count = 0;
// 2. 每次减去最后一个1,count ++
while (x) x -= lowbit(x) , count ++;
cout << count <<' ';
}
return 0;
}