编程珠玑上的代码看不懂,求解释
private const int bitsPerWord = 32;private const int shift = 5;private const int mask = 0x1F;private const int n = 10000000;private static readonly int[] a = new int[1 + n / bitSperWord];//a的长度?为什么是这个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));}