算术位运算-note

我们知道位图的数据结构就是一个数组,而位图的操作(算法)基本依赖于下面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);
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容