Reverse bits of a given 32 bits unsigned integer.
For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 964176192 (represented in binary as 00111001011110000010100101000000).
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
int m=1;
bool j=0;
int result=0;
for(int i=32;i>0;i--)
{
result=result<<1;
j=m&n;
m=m<<1;
result+=j;
}
return result;
}
};
主要思路就是用与1的方式提取n中每一个1或0,然后加到返回值中,返回值再左移。应注意
bool j=0;
不能改为
int j=0;
举个例子,n=2:
这样做的话,那么在第二轮中,j=m&n;得到的j值就会是2,而非1了。只有bool才能保证是1.