40.颠倒二进制位
题目内容:
代码及思路:
看到题目的时候就想到,直接进行右移运算不就好了,但是参考了大家很多做法,不是很理解,希望请教大家,具体分析一下为什么是这样。
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
uint32_t m(0); //m所有位初始化為0
for (auto i = 0; i < 32; ++i) {
if (n & (1 << i))
{ //若n的第i位為1
m |= (1 << (31-i)); //則m的第31-i位為1,否則為初始值0
}
}
return m;
}
};