位数组
宏定义实现位数组相关操作:
#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过滤器
好久没写博客了,想把过去在各个地方写的东西先搬过来,目前的主要工作就是“搬家”。