以前单纯看书看到位运算符的时候头都大,最近关注LeetCode才有了更清晰的体会。practice makes perfect!
class Solution {
public:
uint32_t reverseBits(uint32_t n) {//unint32_t的库文件是stdint.h
uint32_t result;
int i;
int a;
result=0;
int flag=1;//增加一个标记位,用来记录是否是第一位数,如果是,则直接赋值给result,否则result左移一位之后加1
for(i=0;i<32;i++)
{
if(n&1<<i)
a=1;
else
a=0;
if(flag==1)
{
result=a;
flag=0;
}
else
result=(result<<1)+a;//坑爹的优先级,想了半天想不通的时候为啥不加括号的时候结果不对
}
return result;
}
};