位运算与三目运算符
分类: 进阶基础
· 更新时间 2026-5-27 21:41:12
位运算
位运算是直接对二进制位进行操作。
| 运算符 | 名称 | 说明 |
|---|---|---|
& |
按位与 | 两位都为 结果为 |
| ` | 按位或 | |
^ |
按位异或 | 两位不同结果为 |
~ |
按位取反 | 变 , 变 |
<< |
左移 | 所有位左移,右边补 |
>> |
右移 | 所有位右移,左边补符号位 |
常用技巧
// 判断奇偶
if (x & 1) 奇数
if (!(x & 1)) 偶数
// 乘 2 / 除 2
x << 1 // x * 2
x >> 1 // x / 2
// 2 的 k 次方
1 << k // 2^k
// 取第 k 位(从 0 开始)
(x >> k) & 1
// 将第 k 位设为 1
x |= (1 << k)
// 将第 k 位设为 0
x &= ~(1 << k)
// 交换两个数(不借助临时变量)
a ^= b; b ^= a; a ^= b;
// 判断是否为 2 的幂
x > 0 && (x & (x - 1)) == 0
位运算法优先级
位运算符的优先级比较低,建议多加小括号。
常见优先级:+ - > << >> > > < == != > & > ^ > | > && > ||
三目运算符
条件 ? 表达式1 : 表达式2
条件为真返回表达式 的值,否则返回表达式 的值。
int max = (a > b) ? a : b;
int abs = (x >= 0) ? x : -x;
cout << (score >= 60 ? "及格" : "不及格");
三目运算符可以嵌套,但可读性会降低:
// 求三个数的最大值
int max3 = a > b ? (a > c ? a : c) : (b > c ? b : c);