算法1
思路:y总这样写,,真的是好妙啊
题意是这样的 ,题目输入43261596,他的二进制是00000010100101000001111010011100,翻转后是00111001011110000010100101000000,仔细观察可以发现,每次取出二进制数的最后一位向上进一位,就可以得到翻转后的二进制数,转换成十进制是左移1
C++ 代码
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
uint32_t res=0;
for(int i=0;i<32;i++)
res=(res<<1)+(n>>i &1);
//n>>i&1:表示可以取出第i位数,res<<1:表示向高位进位
return res;
}
};