位运算基础与技巧
位运算
| 标志 | ↓=意义 |
|---|---|
a & b |
按位与 |
| `a | b` |
a ^ b |
按位异或 |
~x |
按位取反 |
! a |
非运算 |
a >> x |
右移运算 |
a << x |
左移运算 |
位运算常用技巧
| 操作 | 表示 |
|---|---|
| 将 \(x\) 第 \(i\) 位取反 | x ^= (1 << i) |
| 将 \(x\) 第 \(i\) 位制成 1 | ` x |
| 将 \(x\) 第 \(i\) 位制成 \(0\) | x &= -1 ^ (1 << i) 或 x &= ~(1 << i) |
| 取 \(x\) 对 \(2\) 取模的结果 | x & 1 |
| 取 \(x\) 的第 \(i\) 位是否为 | x & (1 << i) 或 (x >> i) & 1 |
| 取 \(x\) 的最后一位 | x & -x |
| 取 \(x\) 的绝对值 | (x ^ (x >> 31) ) - (x >> 31)(int 型) |
| 判断 \(x\) 是否不为 \(2\) 的整次方幂 | x & (x - 1) |
| 判断 \(a\) 是否不等于 \(b\) | a != b,a - b,a ^ b |
| 判断 x 是否不等于 −1 | x != -1,x ^ -1,x + 1,~x |
负数表示
用补码来表示负数
\(∵−1=0−1\)
\(0=000⋯00\)
\(1=000⋯01\)
\(∴−1=111⋯11\)
同理:
\(−2=111⋯110\)
\(−3=111⋯101\)
\(−4=111⋯100\)
\(...\)
于是有 -x = ~x + 1
参考来源:
https://www.acwing.com/blog/content/2415/
https://www.cnblogs.com/rebirth-death2019/p/13778582.html

浙公网安备 33010602011771号