位视图排序 位操作
小弟对于set clear test函数中各变量值的变化不太了解请明白人帮助解释下 谢谢
还有MASK的作用
#include<STDIO.H>
#define BITSPERWORD 32
#define SHIFT 5
#define MASK 0x1F
#define N 1000
int a[1+N];
void set(int i)
{ a[i>>SHIFT] |= (1<<(i & MASK)); }
void clear(int i)
{ a[i>>SHIFT] &= ~(1<<(i & MASK)); }
int test(int i)
{ return a[i>>SHIFT] & (1<<(i & MASK)); }
int main (void)
{
int i;
for(i=0;i<N;i++)
clear(i);
while(scanf("%d",&i) != EOF)
set(i);
for(i=0;i<N;i++)
if(test(i))
printf("%d\n",i);
return 0;
}