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)

cpp 复制代码
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位-->取反

cpp 复制代码
~(1<<4)

所以写成

cpp 复制代码
n&=(~(1<<4))

往期推荐:

14.【C语言】初识操作符 上

15.【C语言】初识操作符 下

相关推荐
W.Y.B.G13 分钟前
JavaScript 计算闰年方法
开发语言·前端·javascript
liu****16 分钟前
笔试强训(二)
开发语言·数据结构·c++·算法·哈希算法
无限进步_1 小时前
扫雷游戏的设计与实现:扫雷游戏3.0
c语言·开发语言·c++·后端·算法·游戏·游戏程序
qq_433554541 小时前
C++ 完全背包
开发语言·c++·算法
青铜弟弟1 小时前
R语言利用Export包导出pptx格式的文件有错误的原因
开发语言·r语言
Yupureki1 小时前
从零开始的C++学习生活 8:list的入门使用
c语言·c++·学习·visual studio
Siren_dream1 小时前
python进阶_Day8
开发语言·python
蓝天智能1 小时前
QT QML交互原理:信号与槽机制
开发语言·qt·交互
十五年专注C++开发2 小时前
C++类型转换通用接口设计实现
开发语言·c++·跨平台·类设计
im_AMBER2 小时前
杂记 15
java·开发语言·算法