当前位置: 首页 > article >正文

《C和指针》笔记3:置一和清零

在C语言中,移位运算符<<>>表示二进制数左移或右移,我们可以利用它们很轻松地对变量中单个位进行置一和清零。

我们可以规定变量二进制数最右边一位是第0位,定义bit_number是0,对应地,从最右边一位往左数第n位,对应的bit_number是n-1。

在这里插入图片描述
上图是举个例子,

置一

我们如果需要把bit_number对应的数变为1,可以这样写:

value |= 1 << bit_number;

等价于:

value = value | ( 1 << bit_number );

利用1 << bit_number将1移动到bit_number对应的位上。
比如1<<2;我们得到:

在这里插入图片描述
再和value中的值相或,value中除了bit_number对应的位上的数变为1,其他可以保持不变,原理是或的属性:

1|1=1
1|0=1
0|a=a (a=0或a=1)

在这里插入图片描述

清零

我们如果需要把bit_number对应的数变为0,可以这样写:

value &= ~ ( 1 << bit_number );

等价于:

value = value & ( ~ ( 1 << bit_number ) );

利用1 << bit_number将1移动到bit_number对应的位上,再取非,把位上的0变成1,1变成0。
比如~(1<<2);我们得到:

在这里插入图片描述

再和value中的值相与,value中除了bit_number对应的位上的数变为0,其他可以保持不变,原理是或的属性:

0&1=0
0&0=0
1&a=a (a=0或a=1)

在这里插入图片描述

摘录自:《C和指针》71


http://www.kler.cn/news/17537.html

相关文章:

  • 一种用于大坝水库边坡内部振弦式应变计组
  • 【CSS 知识总结】第七篇 - CSS 布局-居中布局-水平居中布局
  • 测试之路,2023年软件测试市场领域有哪些变化?突破走得更远...
  • 2023年全国最新安全员精选真题及答案65
  • 【MOMO】高水平期刊目录(持续更新)
  • 基于微服务架构的水果销售系统的设计与实现
  • springboot文件上传
  • arxiv2022 | MolT5:Translation between Molecules and Natural Language
  • encrypted勒索病毒攻击nas服务器,服务器中了勒索病毒解密数据恢复
  • Redis事务
  • zk之数据的发布与订阅
  • RBF-UKF径向基神经网络结合无迹卡尔曼滤波估计锂离子电池SOC(附MATLAB代码)RBF神经网络训练部分
  • 有趣的回文检测
  • 如何用ChatGPT做团队绩效管理?根据员工的个人优势、不足、目标来生成更具体的绩效反馈
  • 2023/5/7周报
  • 猫狗训练集训练报错:Failed to find data adapter that can handle input
  • C++ Primer第五版_第十五章习题答案(21~30)
  • Spring Boot 整合 Swagger 教程详解
  • ChatGPT写文章效果-ChatGPT写文章原创
  • leetcode 530. 二叉搜索树的最小绝对差
  • 《互联网安全产品漏洞管理规定》
  • 【Linux Network】网络编程套接字
  • 轻松掌握在已有K8s环境上安装KubeSphere
  • 【五一创作】Qt quick基础1(包含基本元素Text Image Rectangle的使用)
  • HTTP加密
  • 身份鉴别解读与技术实现分析(1)
  • 【Linux】多路转接--select、poll、epoll,非阻塞等待
  • 超大excel文件读,避免内存溢出
  • 【华为OD机试真题 Python】简单的解压缩算法 (100%通过)
  • node之Express