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

简单理解:清零为什么多此一举加取反

一、先说结论:不是多此一举,是 C 语言寄存器操作的经典编码习惯

tmpReg &= ~0xFFFF0000等价于tmpReg = tmpReg & 0x0000FFFF

明明可以直接写& 0x0000FFFF,很多工程师偏爱用& ~掩码写法,主要三个原因:

1. 语义直观:你要清零哪几位,就写哪几位的掩码

需求:我要清零高 16 位

  • 高 16 位:0xFFFF,低 16 位:0x0000→ 掩码写0xFFFF0000
  • ~取反后,要清零的位变成 0,要保留的位变成 1

读代码一眼就能看懂:~0xFFFF0000→ 把0xFFFF0000标记的这些位清零。

如果直接写0x0000FFFF: 你得在脑子里反向换算一遍:哪几位是 1、哪几位用来保留,可读性差。

举个例子

要清零 bit3、bit5:

reg &= ~((1<<3)|(1<<5));

一眼看出:把 bit3、bit5 清零。 如果手动算掩码写成reg & 0xFFFFFFD7,谁能一眼看懂清了哪几位?

2. 统一编码规范:位操作三种标准写法,格式统一

  1. 置 1 某几位:reg |= 掩码
  2. 清零某几位:reg &= ~掩码
  3. 翻转某几位:reg ^= 掩码

规则统一: 掩码永远写需要操作的位为 1

  • 置 1:哪些位要设 1,掩码哪些位写 1
  • 清零:哪些位要清 0,掩码哪些位写 1,然后取反

如果清零不用~,就要手动写反向掩码,三种操作写法逻辑不一致,容易写错。

3. 避免手算出错,减少低级错误

比如要清除 bit8~bit15 共 8 位:

  • 方式 1(取反写法):掩码直接写0x00FF00reg &= ~0x00FF00
  • 方式 2(直接掩码):需要自己算出0xFF00FF,很容易算错十六进制

位越多、分散位越多,手动算反向掩码越容易出错,用~可以直接按照操作目标写掩码,不用反向计算。

二、两种写法效果完全一样

  • tmpReg &= ~0xFFFF0000;
  • tmpReg &= 0x0000FFFF;

机器执行结果一模一样,没有性能差异,只是人为可读性、编码规范层面的写法选择。

三、补充:什么时候直接写正向掩码?

只有连续低位保留、简单场景才会直接写0x0000FFFF; 但凡零散位、中间几段位清零,一律用& ~掩码

http://www.jsqmd.com/news/1072312/

相关文章:

  • Meta 员工跟踪计划因安全漏洞暂停,内部数据收集引隐私担忧
  • Ultralytics:解读DWConv模块
  • 【2026最新版】超详细Metasploit安装保姆级教程,Wireshark抓包(网络分析),收藏这一篇就够了
  • 先导02:SECS\-I 串口 \+ HSMS 以太网完整通信底层原理
  • NeuN:神经元特异性核蛋白的多维生物学特性及其在神经科学研究中的关键作用
  • Gaussian-Splatting-SLAM 结合前沿高斯泼溅与slam,这一篇我有时间会复现一下
  • 抚顺黄金白银回收铂金旧金回收无套路门店 TOP 榜单 实地测评资料整理
  • UNiTY疑难杂症
  • 如何三步彻底解决C盘爆红问题:Windows Cleaner实战指南
  • 先导01:SEMI 行业标准体系总览 E4/E5/E37/E87/E40/E94 完整拆解
  • 武汉全屋定制秘籍:转角柜这样设计,衣柜收纳空间大提升!
  • Google研究:对话式医疗系统AMIE升级,管理推理能力不劣于人类医生!
  • 鸿蒙 Next 小众爱好图鉴 App 开发实战:兴趣发现 + 分类系统 + 收藏管理
  • 数据分析向云迁移时如何避免混乱
  • 分人群定制:不同角色如何用好AI建站工具?
  • Python:第11天:异常处理 —— 让程序不轻易崩溃
  • AutoGen 核心 Agent 聊天与对话模式
  • 2026 年企业级大模型API聚合网关选型实录:十款主流平台技术横评与场景匹配
  • 2026年最新选购参考:天学网和科大讯飞到底哪个更适合入手?
  • 三年累亏超3亿、现金流持续为负,思必驰凭什么再闯科创板?
  • 6个本科绿牌专业薪资大揭秘,3S专业就业差距在哪?
  • 告别GitHub英文困扰:5分钟实现中文界面的完整指南
  • AI教材写作必备:低查重AI工具,助你快速打造精品教材!
  • 2026年AI聚合平台大揭秘!哪家公司更胜一筹?
  • 手把手教你从0到1搭建一个AI Agent(智能体)
  • 深度解密:掌握微信数据库AES-256-CBC加密逆向工程核心技术
  • 工业品短视频推广/必打标+必触达+必搜到,工业品短视频推广整套降本打法
  • NS-USBLoader终极指南:3步搞定Switch游戏管理与系统破解
  • AI 时代软件工程巨变:瓶颈转移、角色模糊,未来何去何从?
  • 显卡驱动彻底清理终极指南:为什么你需要Display Driver Uninstaller?