一、基本位操作
|
或
&
与
~
取反
^
异或
<<
左移
>>
右移
二、位操作的常见用法
1.获取某位的值
#define BitGet(Number,pos) ((Number)|= 1<
#define BitGet(Number,pos) ((Number) &= ~(1<
#define BitGet(Number,pos) ((Number) >> (pos)&1)) //用宏得到某数的某位
#define BitGet(Number,pos) ((Number) ^= 1<
2.设定某位的值(设为0或1)
方法一:
#define setbit(x,y) x|=(1<
#define clrbit(x,y) x&=~(1<
方法二:
置0,用0去‘与’
int a|=(1<
x就是某位需要置1的数字,如第四位置1为:int a |= (1<<4)
置1,用1去‘或’
int a&=~(1<
3.循环移位
#define ROTATE_LEFT(x, n) ((x) << (n)) | ((x) >> ((8 * sizeof(x)) - (n)))
#define ROTATE_RIGHT(x, n) ((x) >> (n