n的二进制表示 第k位 是 几
①先把第k位移到最后一位: n >> k
②看个位是几: & 1
n >> k & 1
lowbit(x) :返回x的最后一位1 是多少 例如 1010 ---> 10, 101000 --->1000
实现 : x & -x = x & (~x + 1)
例: 输入一个数组返回数组中每个元素二进制形式中1的个数
代码:
#include <iostream>
using namespace std;
int lowbit(int x)
{
return x & -x;
}
int main()
{
int n;
cin >> n;
while(n --)
{
int x ;
cin >> x;
int res = 0;
while(x) x-= lowbit(x), res++;
cout << res << " ";
}
return 0;
}