按位运算符直接操作二进制位,不进位、不借位、不受符号影响;&有0则0,|有1则1,^相同为0相异为1,~0变1、1变0。

按位运算符直接操作整数的二进制表示,每一位独立参与运算,不进位、不借位,也不受符号影响(负数按补码参与)。理解它们的关键是抓住“单一位对一位”的逻辑规则,而不是数值整体的加减关系。
按位与(&):有0则0,全1才1
两个对应位都为1时结果为1,其余情况均为0。常用于提取特定位或清零。
- 例如:10 & 9 → 二进制为 1010 & 1001 = 1000 → 十进制8
- 判断奇偶:a & 1 结果为1说明末位是1,即a为奇数
- 清零某几位:如想保留高4位、清零低4位,可用 x & 11110000(即0xF0)
按位或(|):有1则1,全0才0
只要有一个对应位为1,结果位就是1。常用于置位(把某些位强制设为1)。
- 例如:3 | 5 → 0011 | 0101 = 0111 → 十进制7
- 设置低4位为1:x | 00001111(即0x0F),不管原值如何,低4位都会变成1
- 合并标志位:多个布尔状态用不同位表示时,用 | 可同时启用多个
按位异或(^):相同为0,相异为1
对应位相同时得0,不同时得1。具备自反性(a ^ a = 0)、恒等性(a ^ 0 = a),适合翻转、交换、校验。
- 例如:3 ^ 5 → 0011 ^ 0101 = 0110 → 十进制6
- 翻转特定位:想翻转x的第2、4位,就让x ^ 00010100(即0x14)
- 无临时变量交换两个整数:a ^= b; b ^= a; a ^= b;
按位取反(~):0变1,1变0
对一个数的每一位做反转。注意:结果是补码形式,所以正数取反后通常为负数。
- 例如:~6,6的8位二进制是 00000110,取反得 11111001,这是-7的补码
- ~常配合+1用于求负数:-x 等价于 ~x + 1
- 构造掩码:如要得到低n位全1的数,可写 ~( ~0










