解题思路
位运算的基本思路:
1.先把第k位移到最后一位 n >> k
2.看个位是几 x & 1
1+2. n >> k & 1
lowbit(x): 作用是x的二进制表达式中最低位的1所对应的值
int lowbit(int x)
{
return x & -x;
}
应用:可以统计x里面1的个数… 是树状数组的基操
算法1
C++ 代码
#include <iostream>
using namespace std;
int n;
int lowbit(int x)
{
return x & -x;
}
int main()
{
cin >> n;
while(n -- )
{
int x;
cin >> x;
int res = 0; //统计x里1的个数
while(x)
{
x -= lowbit(x); //每次减去x里的最后一位1
res ++ ;
}
cout << res << ' ' ;
}
return 0;
}