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;
}