我们知道位图的数据结构就是一个数组,而位图的操作(算法)基本依赖于下面3个元操作
set_bit(char x, int n); //将x的第n位置1,可以通过x |= (1 << n)来实现
clr_bit(char x, int n); //将x的第n位清0,可以通过x &= ~(1 << n)来实现
get_bit(char x, int n); //取出x的第n位的值,可以通过(x >> n) & 1来实现
//位与操作
void swap(int &a, int &b) {
a ^= b;
b ^= a;
a ^= b;
}
if(0 == (a & 1)) {
//偶数
}
int reversal(int a) {
return ~a + 1;
}
int abs(int a) {
int i = a >> 31;
return i == 0 ? a : (~a + 1);
}