使用位逻辑运算实现位向量

来源:互联网 发布:美橙域名管理 编辑:程序博客网 时间:2024/06/05 23:22

本程序的出处为《编程珠玑》第一章的练习2的答案。

#define BITSPERWORD    32
#define SHIFT 5
#define MASK 0x1F
#define N 100000
int a[1+N/BITSPERWORD] ;

//设置a的第i位为1
void set(int i){
a[i>>SHIFT] |= (1<<(i & MASK)) ;
}

//设置a的第i位为0
void clr(int i){
a[i>>SHIFT] &= ~(1<<(i & MASK)) ;
}

//返回a的第i位
int test(int i){
return a[i>>SHIFT] & (1<<(i & MASK)) ;
}