本文章记录 LeetCode 一些题:
话不多说上题目吧:
解题思路:从二进制尾部获取一个,当成另一个数据的头,这样遍历一边就形成了反转:
那么我们开始上代码:
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
uint32_t res = 0;
int i = 32;
while(i--)
{
res = res << 1;
res += n&1;
n = n >> 1;
}
return res;
}
};
代码分析:(1101 做个简单分析)
res << 1 : 向左移动一位,为下一步加法做铺垫
首先 获取数据的最后一位, n&1 这个就可以截取到最后一个数据,这个数是 1,放入到res 里。
n = n >>1 这句话的意思,1101 向右移动一位,变成了110,为了下次循环最后一位获取数据。
这样不断的循环,就把二进制数据反转过来了。