C位操作

来源:互联网 发布:淘宝网潮男装 编辑:程序博客网 时间:2024/04/28 21:41

原文:http://stackoverflow.com/questions/47981/how-do-you-set-clear-and-toggle-a-single-bit-in-c


1.设置第x位为1

number |= 1 << x;

2.设置第x位为0

number &= ~(1 << x);
3.异或第x位

number ^= 1 << x;
4.检测第x位是否为1

bit = number & (1 << x);

相应的可以定义宏来简化

/* a=target variable, b=bit number to act upon 0-n */#define BIT_SET(a,b) ((a) |= (1<<(b)))#define BIT_CLEAR(a,b) ((a) &= ~(1<<(b)))#define BIT_FLIP(a,b) ((a) ^= (1<<(b)))#define BIT_CHECK(a,b) ((a) & (1<<(b)))/* x=target variable, y=mask */#define BITMASK_SET(x,y) ((x) |= (y))#define BITMASK_CLEAR(x,y) ((x) &= (~(y)))#define BITMASK_FLIP(x,y) ((x) ^= (y))#define BITMASK_CHECK(x,y) ((x) & (y))

原创粉丝点击