位操作核心是构造掩码1
如何用 & | ^ ~ 和移位操作单个变量的特定位
直接对整型变量做位操作,核心是构造掩码(mask)——即一个只有目标位为 1、其余位为 0 的数。所有操作都基于“变量 & 掩码”“变量 | 掩码”等组合,而不是靠条件判断或循环。
比如想操作第 n 位(从 0 开始计数),掩码就是 1 。这是所有位操作的起点,漏掉这步就容易写错。
1 是最安全的掩码构造方式;避免手写十六进制如0x04,可读性和可维护性差- 对
unsigned int或uint32_t操作最稳妥;有符号类型右移行为未定义,可能引发意外 - 位序从 0 开始(LSB 是 bit 0),别和数组下标混淆成“第 1 位”指 index=1
设置(置 1)、清除(置 0)、取反(翻转)某一位的写法
这三个是最常用操作,必须记牢对应公式,它们都不改变其他位。
- 设置第
n位:x |= (1 - 清除第
n位:x &= ~(1 —— 注意~作用在掩码上,不是作用在x上 - 取反第
n位:x ^= (1
错误写法示例:x = ~x & (1 会清空所有其他位,不是翻转;x & (1 只是读取,不修改。
立即学习“C++免费学习笔记(深入)”;