C语言位数组宏定义操作
(2013-04-11 08:08:17)
标签:
c语言位数组宏定义位操作it |
分类: linux下的C编程 |
宏定义实现位数组相关操作:
#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过滤器
前一篇:新手建站常见错误指南