贝利信息

C++如何进行位运算操作?(&, |, ^, ~, )

日期:2026-01-13 00:00 / 作者:尼克

C++位运算高效用于底层控制与优化,包括按位与(&)提取/清零位、按位或(|)置位、异或(^)翻转/交换/加密、取反(~)和右移(>>)生成掩码或除法;需注意类型符号性、优先级及移位越界。

>)">

C++ 的位运算直接操作整数的二进制位,效率高、常用于底层控制、状态标记、加密和优化场景。掌握它们的关键是理解每个运算符的逻辑规则和典型用法。

按位与(&):提取或清零特定位

对两个操作数的对应位做“与”运算:都为 1 才得 1,否则为 0。常用作“掩码提取”或“清零”。

按位或(|):设置特定位

对应位只要有一个为 1 就得 1。主要用于“置位”——打开某个标志位。

按位异或(^):翻转或比较

相同为 0,不同为 1。特点是自反性:a ^ a == 0a ^ 0 == a

按位取反(~)和右移(>>):补码取反与位移

~ 对整数每一位取反(注意:有符号数取反后是补码表示,结果为负值);>> 是算术右移(有符号数补符号位)或逻辑右移(无符号数补 0),取决于操作数类型。

位运算本身不难,但容易出错的地方在于数据类型(尤其符号性)、优先级(& 和 | 优先级低于 == 和 !=,记得加括号)、以及移位位数是否越界(C++ 中移位位数必须小于类型宽度,否则未定义)。写的时候多用十六进制常量和 sizeof 验证,能少踩很多坑。