位操作
来源:互联网 发布:obs直播软件 清晰度 编辑:程序博客网 时间:2024/06/10 05:38
//==========================================================================
#define SET_BIT(data,bit) ((data) |= (0x01l<<(bit)))
#define CLR_BIT(data,bit) ((data) &= (~(0x01l<<(bit))))
#define CPL_BIT(data,bit) ((data) ^= ((0x01l<<(bit))))
#define GET_BIT(data,bit) (((data)&(0x01l<<(bit))) == (0x01l<<(bit)))
#define SET_BIT_EX(data,bit) SET_BIT(data[(bit)/32], ((bit)%32))
#define CLR_BIT_EX(data,bit) CLR_BIT(data[(bit)/32], ((bit)%32))
#define CPL_BIT_EX(data,bit) CPL_BIT(data[(bit)/32], ((bit)%32))
#define GET_BIT_EX(data,bit) GET_BIT(data[(bit)/32], ((bit)%32))
//获取位变量(获取data变量从第bitbase位起始的bitlen个位组成的变量(bitbase+bitlen)必须小于或等于32
#define GET_BIT_VAR(data, bitbase, bitlen) ((data)<<(32-(bitlen)-(bitbase))>>(32-bitlen))
#define OFFSETOF(s,m) ((int)&(((s*)NULL)->m))
#ifndef ARRAYLEN
#define ARRAYLEN(x) (sizeof(x)/sizeof(x[0]))
#endif //ARRAYLEN
#ifndef DPrintf
#define DPrintf(x,arg...) printf(x,##arg)
#endif //DPrintf
#define FOPrintf(x,arg...) {DPrintf("File:%s Line:%d ",__FILE__,__LINE__);DPrintf(x,##arg);}
#define BREAKPOINT() {FOPrintf("breakpoint any key to continus...\r\n");fflush(stdout);getchar();}
int udp_sendto(int sFd, void *pBuf, int len, char *pIp, int nPort);
int udp_open(struct sockaddr_in *pSock, int Port);
void TraceMem(int DbgLvl, void *Data, unsigned int buflen,unsigned int DataMode,unsigned int LineDataLen);
//==========================================================================
//xiangzi add 2011-5-25 11:24:56
//位操作
#define SETBIT(Data,Bit) do{ Data |= (1<<Bit); }while(0) //设置某个无符号数的某个位为1
#define CLRBIT(Data,Bit) do{ Data &= ~(1<<Bit); }while(0) //设置某个无符号数的某个位为0
#define TSTBIT(Data,Bit) (Data & (1<<Bit)) //
//内存方式,小端存储方式
//#define SETBIT_8EX_INC(data,bit) SET_BIT(data[(bit)/8], (7-(bit)%8))
//#define CLRBIT_8EX_INC(data,bit) CLR_BIT(data[(bit)/8], (7-(bit)%8))
//#define CHECKBIT_8EX_INC(data,bit) (((data[(bit)/8]&(0x01<<(7-(bit)%8)))==(0x01<<(7-(bit)%8)))?1:0)
//查询某个位是否为1
#define SETBIT_8EX(data,bit) SET_BIT(data[(bit)/8], ((bit)%8))
#define CLRBIT_8EX(data,bit) CLR_BIT(data[(bit)/8], ((bit)%8))
#define CHECKBIT_8EX(data,bit) (((data[(bit)/8]&(0x01<<((bit)%8)))==(0x01<<((bit)%8)))?1:0)
#define SETBIT_32EX(data,bit) SET_BIT(data[(bit)/32], ((bit)%32))
#define CLRBIT_32EX(data,bit) CLR_BIT(data[(bit)/32], ((bit)%32))
#define CHECKBIT_32EX(data,bit) (((data[(bit)/32]&(0x01<<((bit)%32)))==(0x01<<((bit)%32)))?1:0)
//==========================
#define CHECKBIT(Data,Bit) (((Data&(0x01<<Bit))==(0x01<<Bit))?1:0) //查询某个位是否为1
#define GETBIT(Data,Bit) CheckBit(Data,Bit)
#define ASSIGNBIT(Data,Bit,Value) do{ Data =(Data &( ~(1<<Bit)))|(Value<<Bit); }while(0)//先清零该位再或Value
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- Exercises 2-6
- Visual Studio 2008 使用 WinCE 5.0 Emulator
- Opencv学习笔记(八)视频流2
- android 使用timer
- 使用jQuery插件实现添加用户
- 位操作
- [c/c++] C++库资源
- 用jquery实现全选、全不选、反选 //很好用//
- Python_API_File and Directory Access_os.path.expanduser
- java---多态--php的框架---tp
- 数据库(三)数据库基础之数据库语言
- MySQL Cluster的简易部署文档
- Struts2的json数据的访问
- minicom 使用安装