驱动开发常用位运算

//将x的第bit位置0
#define SETLOW(x,bit) (x&(~(1<<bit)))
//将x的第bit位置1
#define SETHIGH(x,bit) (x|(1<<bit))
//获取x的第bit为的值(0/1)
#define	GET_BIT(x, bit)	((x & (1 << bit)) >> bit)	
//获取16位数的高八位
#define GET_H8(x) (x>>8)
//获取16位数的低八位
#define GET_L8(x) (x&0xFF)
//拼接高八位和低八位
#define CONTACT(h8,l8) ((h8 << 8)|(l8))
//求绝对值
#define ABS(x) ((1-((((x)>>(sizeof(x)*8-1))&1)<<1))*(x))

说明:
将x的某位设为0运算:

x&=~(1<<bit);

将x的某位设为1运算:

x|=1<<bit;

取16位数的高八位

x>>8

取16位数的低八位

x&0xFF
原文地址:https://www.cnblogs.com/hztd/p/14200920.html