C位操作

原文: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))

你可能感兴趣的:(vc6)