190. 颠倒二进制位
2025-05-12 08:50:21

思路

位运算的题目需要尽量往Java提供的位运算上去想。我一开始做题的时候就是想用数组+模拟的方法来做,但是显然这样效果不佳。

这道题用到的位运算知识点有:

  1. 取当前位:与右移运算符配合,假设当前是第i + 1位,则右移i位,并&1,即可取得当前位。
  2. 设置当前位为1:|1左移i - 1位。

也就是位运算需要多考虑与或非异或位移运算等。

Code

1
2
3
4
5
6
7
8
9
10
11
12
public class Solution {
public int reverseBits(int n) {
int ans = 0;
for (int i = 0; i < 32; i++) {
int t = (n >> i) & 1;
if (t == 1) {
ans |= (1 << (31 - i));
}
}
return ans;
}
}