64,654
社区成员
发帖
与我相关
我的任务
分享
/*计算数组下标*/
#define ARRAY_INDEX(index, BitNum) ((index) / (BitNum))
/*计算BIT位*/
#define BIT_INDEX(index, BitNum) ((index) % (BitNum))
#define CLR_BIT_NUM(addr, index, BitNum, type) \
*(addr + ARRAY_INDEX(index, BitNum)) &= \
(~(((type)0x01) << BIT_INDEX(index, BitNum)))
#define SET_BIT_NUM(addr, index, BitNum, type) \
*(addr + ARRAY_INDEX(index, BitNum)) |= \
(((type)0x01) << BIT_INDEX(index, BitNum))
#define CHK_BIT_NUM(addr, index, BitNum, type) \
(*(addr + ARRAY_INDEX(index, BitNum)) >> BIT_INDEX(index, BitNum)) & ((type)0x01)
#define CLR_BIT_LONG(addr, index) (CLR_BIT_NUM(addr, index, 32, unsigned long))
#define SET_BIT_LONG(addr, index) (SET_BIT_NUM(addr, index, 32, unsigned long))
#define CHK_BIT_LONG(addr, index) (CHK_BIT_NUM(addr, index, 32, unsigned long))
#define CLR_BIT_UNINT(addr, index) (CLR_BIT_NUM(addr, index, 32, unsigned int))
#define SET_BIT_UNINT(addr, index) (SET_BIT_NUM(addr, index, 32, unsigned int))
#define CHK_BIT_UNINT(addr, index) (CHK_BIT_NUM(addr, index, 32, unsigned int))