bitl 需要设置的位的低位 bith 需要设置的位的高位 data 需要设置的数据 */voidSET_DATA(unsignedint*value,unsignedintbitl,unsignedintbith,unsignedintdata){unsignedint*v=value;if(bitl<=bith){unsignedintbcount=bith-bitl+1;unsignedintcbit=0;unsignedintcdata=0;for(unsignedinti=0;i<bcount;i++)...
#define SET_BIT(reg, bit) ((reg) |= (1 << (bit))) // 清除某个位为0 #define CLEAR_BIT(reg, bit) ((reg) &= ~(1 << (bit))) // 切换某个位的状态 #define TOGGLE_BIT(reg, bit) ((reg) ^= (1 << (bit))) // 读取某个位的值 #define READ_BIT(reg, bit) (((reg) ...
#define SET_BIT(x,n) (x|((1U)<<(n-1))) #define CLEAR_BIT(x,n) ((x & ~((1U)<<(n-1))) 10,截取变量的部分连续位。比如变量0x88,即0x10001000b,若截取第2~4位,则值为100b = 4。 #define GETBITS(x,n,m) ((x & ~(~(0U)<<(m-n+1))<<(n-1))>>(n-1)) 分析: #...
5 #define SET_BIT(x,n) (x | 1U<<(n-1)) 6 7 //这里就是要把数字x的第n位(bit(n-1)位)清零 8 #define CLEAR_BIT(x,n) (x & ~(1U<<(n-1))) 9 10 //这里就是要把数字x的第n到m位置为1(n是低位,m是高位) 11 //就是先把0取反就可以得到很多的1,然后左移就得到那么多个0,...
#define SET_BIT(x, bit) (x |= (1 << bit)) /* 置位第bit位 */ 4、判断某一位或某几位连续位的值 (1)判断某一位的值 举例说明:判断0x68第3位的值。 也就是说,要判断第几位的值,if里就左移几位(当然别过头了)。在嵌入式编程中,可通过这样的方式来判断寄存器的状态位是否被置位。 (2)...
3、一个32bit数据的位、字节置1操作 (1)置某个字节为1: 代码语言:javascript 复制 #defineSET_LOW_BYTE0(x)(x|=0x000000ff)/* 第0个字节置1 */#defineSET_LOW_BYTE1(x)(x|=0x0000ff00)/* 第1个字节置1 */#defineSET_LOW_BYTE2(x)(x|=0x00ff0000)/* 第2个字节置1 */#defineSET_LOW_...
将变量X的第Y位设置成1.比如,X为一个short型变量,其值为0, Y=3。执行SETBIT(X,Y)后,X的值变为4。X用二进制表示就是:0000 0000 0000 0100 即第三位被设置成了1.
#define SET_BIT_N_M(x, n, m) (x |(0U<<(m-n+1))<<(n-1)) 2.3.1、分析 假如n=3,m=6,题目就是要把bit2到bit5置位,我们需要一个算式来得到(m-n+1)个1。 1、先得到32位1:~0U; //~按位取反得到32位1,若直接1U那么就只有bit0位1 ...
是做单片机么?void set_bit3(int a){ a|=(1<<2);}
1、指定的某一位数置1 define setbit(x,y) x|=(1<<y) 2、指定的某一位数置0 define clrbit(x,y) x&=~(1<<y) 3、指定的某一位数取反 define reversebit(x,y) x^=(1<<y) 4、获取的某一位的值 define getbit(x,y) ((x) >> (y)&1)...