位图数据结构的操作

摘自《编程珠玑》一书第1章习题:

   1:  #define BITSPERWORD 32
   2:  #define SHIFT 5
   3:  #define MASK 0x1F
   4:  #define N 10000000
   5:  int a[1 + N/BITSPERWORD];
   6:   
   7:  void set(int i){
   8:      a[i >> SHIFT] |= (1 << (i & MASK));
   9:  }
  10:   
  11:  void clr(int i){
  12:      a[i >> SHIFT] &= ~(1 << (i & MASK));
  13:  }
  14:   
  15:  int test(int i){
  16:      return     a[i >> SHIFT] & (1 << (i & MASK));
  17:  }

posted on 2011-05-12 11:39  Joshua Leung  阅读(337)  评论(0)    收藏  举报

导航