位运算
lowbit操作(返回最后一位1后的数)
lowbit:
x & -x;
eg:10001100 进行 lowbit 操作后,得到100
#include <algorithm>
#include <cstdio>
using namespace std;
int n;
int lowbit(int x)
{
return x & -x;
}
int main()
{
scanf("%d", &n);
for (int i = 0; i < n; i++) {
int x, res = 0;
scanf("%d", &x);
while (x) {
x -= lowbit(x);
res++;
}
printf("%d ", res);
}
return 0;
}
1 与 0 的互换
用于状态改变
st[i] ^= 1
对于数字0和1,由:
0 ^ 1 = 1; 1 ^ 1 = 0
可知之需要对该变量 ^1 即可实现0与1的转换
同理对于'0','1',其ASCII码为0011 0000、0011 0001,也是适用
ASKCII码表