首先,位操作是通过与运算和或运算来实现的,与的特性是:有0为0,全1为1,或的特性是:有1为1,全0为0。也就是,
和0与会被清0,和1与会被保持
和1或会被置1,和0或会被保持
那么位操作的实现就很明确了,那清0就使用与运算,置1就使用或运算。
接下来,以把0xF0的bit2置1,bit4清0为例,代码如下
#include <stdio.h>
int main(void) {
int a = 0xF0; //二进制数字
int b, c;
b=a|(1<<2);//0b1111'0100=0xf4,~是取反操作
c=a&(~(1<<4));//0b1110'0000=0xe0
printf("十六进制输出:\n"); //以十六进制形式输出
printf("a=%#X, b=%#X, c=%#X\n", a, b, c); //X大写,则输出的前缀和字母都大写
//小技巧
a|=1<<2;
printf("a=%#X\n", a);
a&=~(1<<4);
printf("a=%#X\n", a);
return 0;
}
实验结果: