有个a是一个整形的,占8位,所以bit3应该是第三位。
|(或)操作,当操作数为1时,结果为1,当操作数为0时,结果不变。 1|1 =1 ,1|0=1,0|1=1,0|0=0
&(与)操作,当操作数为1时,结果不变,当操作数为0时,结果为0。1&1=1,1&0=0,0&1=0,0&0=0
因此,设置a的bit 3为1的方法就是将a和00001000作|操作,这样其他位都不变,只有第3位变成1,清除a的bit3的方法就是将a和11110111作&操作,这样第3位变成0,其他位不变。
附上代码:
#define BIT3 (0x1<<3)
static int a;
void set_bit3(void)
{
a |= BIT3;
}
void clear_bit3(void)
{
a &= ~BIT3;
}