03-进阶基础/06-位运算与三目运算符:修订间差异
跳转到导航
跳转到搜索
小 导入1个版本 |
->Importer 批量导入三三文档 |
(没有差异)
| |
2026年5月20日 (三) 16:50的版本
位运算
位运算是直接对二进制位进行操作。
| 运算符 | 名称 | 说明 |
|---|---|---|
&
|
按位与 | 两位都为 [math]\displaystyle{ 1 }[/math] 结果为 [math]\displaystyle{ 1 }[/math] |
|
|
按位或 | 两位有一个为 [math]\displaystyle{ 1 }[/math] 结果为 [math]\displaystyle{ 1 }[/math] |
^
|
按位异或 | 两位不同结果为 [math]\displaystyle{ 1 }[/math] |
~
|
按位取反 | [math]\displaystyle{ 0 }[/math] 变 [math]\displaystyle{ 1 }[/math],[math]\displaystyle{ 1 }[/math] 变 [math]\displaystyle{ 0 }[/math] |
<<
|
左移 | 所有位左移,右边补 [math]\displaystyle{ 0 }[/math] |
>>
|
右移 | 所有位右移,左边补符号位 |
常用技巧
// 判断奇偶
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
条件为真返回表达式 [math]\displaystyle{ 1 }[/math] 的值,否则返回表达式 [math]\displaystyle{ 2 }[/math] 的值。
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);