题目是将一个变量a的bit3置为1,将变量b的bit3置为0,写两行代码。
看到这里就要想到与或非的关系:
与(&):相同为真,不同为假(遇0为0,全1为1)。
或( | ):遇真为真,全假为假(遇1为1,全0为0)。
非( ! ):遇真为假,遇假为真。
取反(~):0变1,1变0。
下面我们来看看如何将变量a的bit3置为1
#include<stdio.h>
#define SHIFT 0x1<<3 //位移3位
int main(void)
{
int a;
a|SHIFT; //0000 0000 | 0000 0100
return 0;
}
将变量a的bit3置为0
#include<stdio.h>
#define SHIFT 0x1<<3
int main(void)
{
int a;
a & (~SHIFT); //0000 0000 & 1111 1011
return 0;
}
大概就是这样,通过位与可以简单的达成置换。