取自Programming Pearls
#define BITSPERWORD 32
#define SHIFT 5
#define MASK 0x1F
#define N 1000000
int a[1+N/BITSPERWORD];
void set(int i){a[i>>SHIFT]|=1<<(i&MASK);}
void clr(int i){a[i>>SHIFT]&=~(1<<(i&MASK));}
int test(int i){return a[i>>SHIFT]&(1<<(i&MASK));}
注意:这里i&MASK是i对MASK取模。