#include <stdio.h>
#define BITSPERWORD 32
#define SHIFT 5
#define MASK 0x1F
#define N 100
int a[1+N/BITSPERWORD];
void set(int i){
printf("set 中 i=%d\n",i);
printf("set 中 a[i >> SHIFT]=a[%d]\n",i>>SHIFT);
printf("set 中 i & MASK=%d\n",i & MASK);
printf("set 中 1 << (i & MASK)=%d\n",1 << (i & MASK));
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));}
int main () {
int i;
printf("清理数据:");
for(i = 0; i < N;i++){
clr(i);
printf("%d,",a[i]);
}
while(scanf("%d",&i) != EOF){
set(i);
}
for(i = 0; i < N;i++){
printf("%d,",a[i]);
}
printf("处理后数据:\n");
for(i = 0; i < N; i++){
printf("i=%d,a[%d]=%d\n",i,i,a[i]);
if(test(i))
printf("i = %d,a[i]=%d,\n",i,a[i]);
}
return 0;
}