题目翻译:
逆反32位无符号整数位。
例如,给定的输入43261596(以二进制表示为000000 10100101000001111010011100),返回964176192(以二进制表示为00111001011110000010100101000000)。
更进一步:
如果这个函数被调用多次,你会如何优化呢?
分析:DONE
典型的位运算
逆反,则需要将低位变成高位,所以迭代开始就需要我们先取出末尾,然后将原来的低位结果*2,再加上当前位
,最后原数需要右移一维,见代码,一目了然:
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
uint32_t result=0;
uint32_t num=n;
for(int i=0;i<32 ;i++)
{
int endbit=num & 0x0001;//取末尾位
result= (result << 1) + endbit;//逆置,往左移动,为什么一定要加个括号呢?
num=num >> 1;//往右移动一位
}
return result;
}
};
注:本博文为EbowTang原创,后续可能继续更新本文。如果转载,请务必复制本条信息!
原文地址:http://blog.csdn.net/ebowtang/article/details/50448468
原作者博客:http://blog.csdn.net/ebowtang