位数组

宏定义实现位数组相关操作:
#define BITMASK(b) (1<<((b)%CHAR_BIT))//字节内偏移
#define BITSLOT(b) ((b)/CHAR_BIT)//将数据映射到所属字节内
#define BITSET(a,b) ((a)[BITSLOT(b)] |= BITMASK(b))//置位
#define BITCLEAR(a,b) ((a)[BITSLOT(b)] &= ~BITMASK(b))//清位
#define BITTEST(a,b) ((a)[BITSLOT(b)] & BITMASK(b))//查看相应位数据
#define BITNSLOTS(nb) ((nb + CHAR_BIT - 1) / CHAR_BIT)//计算所需字节数
优点:减少函数调用开销,位数组对空间利用率高,参见bloom过滤器
posted @ 2012-08-18 15:02  ArthurSJiang  阅读(119)  评论(0编辑  收藏  举报