算法学习笔记(7)——位操作
位操作
lowbit原理
根据计算机负数表示的特点,如一个数字原码是10001000,他的负数表示形式是补码,也就是反码+1,反码是01110111,加一则是01111000,二者按位与得到了1000,就是我们想要的lowbit操作
#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;
}