java位运算符&、|、^、~对二进制补码逐位操作:&同1得1,用于清零或判位;|有1得1,用于置位或标志合并;^相同为0、不同为1,用于翻位、交换或找唯一数;~0变1、1变0,结果为补码负数。

Java 中的位运算符 &、|、^、~ 直接对整数类型的二进制补码表示进行逐位操作,不关心数值含义,只看每一位是 0 还是 1。
按位与(&):同为 1 才得 1
对两个操作数的对应位执行逻辑与。常用于“清零特定位”或“判断某位是否为 1”。
- 0 & 0 = 0,0 & 1 = 0,1 & 0 = 0,1 & 1 = 1
- 例如:
5 & 3→0101 & 0011 = 0001→ 结果为1 - 检查第 n 位是否为 1:用
x & (1 ,结果非 0 表示该位是 1 - 把第 n 位清零:用
x & ~(1
按位或(|):有 1 就得 1
对对应位执行逻辑或。常用于“置位”(将某位设为 1)。
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
- 0 | 0 = 0,0 | 1 = 1,1 | 0 = 1,1 | 1 = 1
- 例如:
5 | 3→0101 | 0011 = 0111→ 结果为7 - 把第 n 位设为 1:用
x | (1 - 多个标志合并:如
READ | WRITE | EXECUTE(常用于权限掩码)
按位异或(^):相同为 0,不同为 1
对对应位执行异或。特点是“自反性”(a ^ a = 0)和“可逆性”(a ^ b ^ b = a),适合交换、翻转、校验。
- 0 ^ 0 = 0,0 ^ 1 = 1,1 ^ 0 = 1,1 ^ 1 = 0
- 例如:
5 ^ 3→0101 ^ 0011 = 0110→ 结果为6 - 翻转第 n 位:用
x ^ (1 - 不使用临时变量交换两个整数:
a ^= b; b ^= a; a ^= b; - 找出数组中唯一出现一次的数(其余均出现两次):全部异或,结果即为答案
按位取反(~):0 变 1,1 变 0
对操作数的每一位取反。注意 Java 中整数是有符号的,所以结果是补码表示的负数。
- ~0 = -1,~1 = -2,~5 = -6
- 因为
5是...00000101,取反后是...11111010,即补码表示的-6 - 常用技巧:
~x + 1等价于-x(即求负) - 配合 & 使用可构造掩码,如
~0xFF得到低 8 位为 0、其余为 1 的掩码
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










