位运算
| 标志 | ↓=意义 |
|---|---|
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