您的当前位置:首页正文

E25.【C语言】练习:修改二进制序列的指定位

来源:九壹网

十进制13-->二进制01101

现要求二进制序列的第5位修改为1,再改成0


复习:逻辑运算的布尔运算符

非(NOT)(C语言:~)

x==0,NOT x-->1;x==1,NOT x-->0

与(AND)(C语言:&)

x=0或1,x AND 0-->0,0 AND x-->0

或(OR)(C语言:|)

x=0或1,x OR 1-->1,1 OR x-->1

异或(XOR)(C语言:^)

x==0或1,x XOR 1-->NOT x和1 XOR x--> NOT x


只要让第5位改为1,其他序列保持不变,应该用OR

0 OR 1==1(从0变1),1 OR 0==1(不变),0 OR 0==0(不变)

最简单的方法是让1左移4位(补0)

int n=13;
n |=(1<<4);
printf("%d",n);

改回0:用AND

 1 AND 0==0(从1变0)1 AND 1==1(不变)0 AND 1==0(不变)

该数(111111...01111)得到的方法:

1向左移动4位-->取反

~(1<<4)

所以写成

n&=(~(1<<4))

往期推荐:

因篇幅问题不能全部显示,请点此查看更多更全内容

Top