题目分析
题目链接,登录 LeetCode 后可用
这道题让我们将一个 32 位无符号整数的二进制比特位进行逆序操作。比如:
4,100 => 001,程序返回 1
6,110 => 011,程序返回 3
这里我们用移位操作和或运算来解此题。其中右移 1 位就是除 2,左移一位就是乘 2。
代码
public class Solution {
// you need treat n as an unsigned value
public int reverseBits(int n) {
int res = 0;
// 题目要求是 32 位无符号整数
for(int i = 0; i < 32; i++) {
res = (res << 1) | (n & 1);
n >>= 1;
}
return res;
}
}
网友评论