本程序的出处为《编程珠玑》第一章的练习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)) ;
}