0006. 位运算常用技巧
1. 🫧 评价
- 嵌入式领域
- 嵌入式领域里二进制运算可以说是“家常便饭”。
- Leetcode 刷题层面
- 在刷 Leetcode 的时候,里边儿会遇到一些和二进制运算相关的例题,其中涉及到一些经典的位运算技巧,比如
(n & (n-1)) == 0就能用来判断 n 是否是 2 的幂,对应题目:231. 2 的幂。类似的题目还有很多…… - 笔记中记录的一些使用技巧,目前(25.09)主要来源于 Leetcode 刷题中的应用。
- 在刷 Leetcode 的时候,里边儿会遇到一些和二进制运算相关的例题,其中涉及到一些经典的位运算技巧,比如
2. 常用位运算技巧应用
| 技巧 | 表达式 | 说明 |
|---|---|---|
| 判断奇偶性 | n & 1 | 结果为 1 表示奇数,为 0 表示偶数 |
| 清零最低位的 1 | n & (n-1) | 消除 n 的二进制表示中最右边的 1 |
| 获取最低位的 1 | n & (-n) | 获取 n 的二进制表示中最右边的 1 |
| 判断是否为 2 的幂 | (n & (n-1)) == 0 | 2 的幂的二进制表示中只有一个 1 |
| 交换两数 | a ^= b; b ^= a; a ^= b; | 不使用临时变量交换两个数 |
| 将最右边的 0 变为 1 | n | (n+1) | 将 n 的二进制表示中最右边的 0 变为 1 |
| 获取最右边的 0 的位置 | ~n & (n+1) | 返回最右边的 0 的位置所代表的值 |
| …… | …… | …… |