#defineGET_BIT(value,bit)((value)&(1<<(bit)))//读取指定位#defineCPL_BIT(value,bit)((value)^=(1<<(bit)))//取反指定位#defineSET0_BIT(value,bit)((value)&=~(1<<(bit)))//把某个位置0#defineSET1_BIT(value,bit)((value)|=(1<<(bit)))//把某个位置1 位操作函数 这4个宏定义...
unsigned int num = 0x12345678; SET_BIT(num, 3); // set the 3rd bit to 1 CLEAR_BIT(num, 7); // clear the 7th bit to 0 TOGGLE_BIT(num, 15); // toggle the 15th bit if (TEST_BIT(num, 2)) { // test the 2nd bit // do something } 这段代码的意思是,使用SET_BIT宏可以将...
#define SET_BIT_N_M_Y(x,n,m,y) ((x & (~(((1U)<<abs(m-n+1))-1U)<<n))) | (y<<n)) 上面的含义是将变量x的第n~m位的值设置成y,其中n为低位,m为高位。 然后我们可以使用上面这个宏函数来完成在C语言环境中对信号变量的某些bit位进行操作,参考如下代码: //定义一个16位宽的wdata...
/* 字节串中设置某BIT为0 */ #define SETBITSTO0_OF_BYTES(x, y) (x[(y)/8]) &= (~(1 << ((y)%8))) /* 字节串中设置某BIT为1 */ #define SETBITSTO1_OF_BYTES(x, y) (x[(y)/8]) |= (1 << ((y)%8)) 数组与结构体相关的宏定义 /* number of elements in an array *...
1.用宏定义将32位数x的第n位(bit0算第一位)置位 #define SET_BIT(x,n) (x|(1U<<(n-1))) 2.用宏定义将32位数x的第n位(bit0算第一位)清零 #define CLEAR_BIT(x,n) (x&~(1U<<(n-1))) 3.用宏定义将32位数x的第n到m位置位 #define SET_BIT_N_M(x,n,m) (x|((~((~0U)<<(...
将变量X的第Y位设置成1.比如,X为一个short型变量,其值为0, Y=3。执行SETBIT(X,Y)后,X的值变为4。X用二进制表示就是:0000 0000 0000 0100 即第三位被设置成了1.
2. 宏定义位运算 2.1、用宏定义将32位数x的第n位置位,n的取值范围为[1, 32],即第一位为bit0,U:unsigned int 无符号整型。 #define SET_BIT_N(x, n) (x | (1U<<(n-1))) 2.2、用宏定义将32位数x的第n位清零复位,n的取值范围为[1, 32]。
宏BIT_POS(N)能返回一个和N指定的位对应的屏蔽字(例如BIT_POS(O)和BIT_POS(1)分别返回最低位和倒数第二位的屏蔽字),因此你可以用 define A_FLAG BIT_POS(12)define A_FLAG BIT_P0S(13)代替 define A_FLAG 4096 define A_FLAG 8192 这样可以降低出错的可能性。宏SET_FLAG(N,F)能置位...
给一个32bit数据的位置1,怎么用宏来实现? #defineSET_BIT(x,bit) (x|=(1<<bit))/* 置位第bit位 */ 1. 隐式转换规则 如下代码的输出结果是?为什么? #include<stdio.h> intmain(void) { unsignedinta=6; intb=-20; if(a+b>6) ...
8SEEK_CUR、SEEK_END 和 SEEK_SET这些宏是在These macros are used in the fseek 函数中使用,用于在一个文件中定位不同的位置。9TMP_MAX这个宏是 tmpnam 函数可生成的独特文件名的最大数量。10stderr、stdin 和 stdout这些宏是指向 FILE 类型的指针,分别对应于标准错误、标准输入和标准输出流。