#ifndef BIT_IS_1
#define BIT_IS_1(value,bitpos) (((value)&(1<<(bitpos)))>>(bitpos)) //判断某1位是1还是0
#endif#ifndef GET_BIT
#define GET_BIT(value,bitpos) ((value)&(1<<(bitpos))) //读取指定位置bit位的值
#endif#ifndef REV_BIT
#define REV_BIT(value,bitpos) ((value)^=(1<<(bitpos))) //取反指定位置bit位的值
#endif#ifndef SET_0_BIT
#define SET_0_BIT(value,bitpos) ((value)&=~(1<<(bitpos))) //把某个bit位置0
#endif#ifndef SET_1_BIT
#define SET_1_BIT(value,bitpos) ((value)|= (1<<(bitpos))) //把某个bit位置1
#endif//将两个unsigned char 转换成 unsigned short(BYTExBYTE2WORD)
#ifndef MAKE_WORD
#define MAKE_WORD(low, high) ((unsigned short)(((unsigned char)(((unsigned __int64)(low)) & 0xff)) | ((unsigned short)((unsigned char)(((unsigned __int64)(high)) & 0xff))) << 8))
#endif//将两个unsigned short转换成 long(WORDxWORD2DWORD)
#ifndef MAKE_LONG
#define MAKE_LONG(low, high) ((long)(((unsigned short)(((unsigned __int64)(low)) & 0xffff)) | ((unsigned long)((unsigned short)(((unsigned __int64)(high)) & 0xffff))) << 16))
#endif//取DWORD的低位WORD
#ifndef LO_WORD
#define LO_WORD(l) ((unsigned short)(((unsigned __int64)(l)) & 0xffff))
#endif//取DWORD的高位WORD
#ifndef HI_WORD
#define HI_WORD(l) ((unsigned short)((((unsigned __int64)(l)) >> 16) & 0xffff))
#endif//取WORD的低位BYTE
#ifndef LO_BYTE
#define LO_BYTE(w) ((unsigned char)(((unsigned __int64)(w)) & 0xff))
#endif//取WORD的高位BYTE
#ifndef HI_BYTE
#define HI_BYTE(w) ((unsigned char)((((unsigned __int64)(w)) >> 8) & 0xff))
#endif//取一个数的其中几位,例如:x的bit[7,4]:表示版状态,则取值计算为 auto val=GET4LO2HI(x,4,7);
#ifndef GET4LO2HI
#define GET4LO2HI(value,low,high) ((value>>low)&(~(1<<(high-low+1))))
#endif
#ifndef BIT_IS_1
#define BIT_IS_1(value,bitpos) (((value)&(1<<(bitpos)))>>(bitpos)) //判断某1位是1还是0
#endif#ifndef GET_BIT
#define GET_BIT(value,bitpos) ((value)&(1<<(bitpos))) //读取指定位置bit位的值
#endif#ifndef REV_BIT
#define REV_BIT(value,bitpos) ((value)^=(1<<(bitpos))) //取反指定位置bit位的值
#endif#ifndef SET_0_BIT
#define SET_0_BIT(value,bitpos) ((value)&=~(1<<(bitpos))) //把某个bit位置0
#endif#ifndef SET_1_BIT
#define SET_1_BIT(value,bitpos) ((value)|= (1<<(bitpos))) //把某个bit位置1
#endif//将两个unsigned char 转换成 unsigned short(BYTExBYTE2WORD)
#ifndef MAKE_WORD
#define MAKE_WORD(low, high) ((unsigned short)(((unsigned char)(((unsigned __int64)(low)) & 0xff)) | ((unsigned short)((unsigned char)(((unsigned __int64)(high)) & 0xff))) << 8))
#endif//将两个unsigned short转换成 long(WORDxWORD2DWORD)
#ifndef MAKE_LONG
#define MAKE_LONG(low, high) ((long)(((unsigned short)(((unsigned __int64)(low)) & 0xffff)) | ((unsigned long)((unsigned short)(((unsigned __int64)(high)) & 0xffff))) << 16))
#endif//取DWORD的低位WORD
#ifndef LO_WORD
#define LO_WORD(l) ((unsigned short)(((unsigned __int64)(l)) & 0xffff))
#endif//取DWORD的高位WORD
#ifndef HI_WORD
#define HI_WORD(l) ((unsigned short)((((unsigned __int64)(l)) >> 16) & 0xffff))
#endif//取WORD的低位BYTE
#ifndef LO_BYTE
#define LO_BYTE(w) ((unsigned char)(((unsigned __int64)(w)) & 0xff))
#endif//取WORD的高位BYTE
#ifndef HI_BYTE
#define HI_BYTE(w) ((unsigned char)((((unsigned __int64)(w)) >> 8) & 0xff))
#endif//取一个数的其中几位,例如:x的bit[7,4]:表示版状态,则取值计算为 auto val=GET4LO2HI(x,4,7);
#ifndef GET4LO2HI
#define GET4LO2HI(value,low,high) ((value>>low)&(~(1<<(high-low+1))))
#endif