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).

Follow up:
If this function is called many times, how would you optimize it?

待优化。。。

uint32_t reverseBits(uint32_t n) {
int value = 0, pos = 31;

while (n > 0) {
value += ((n & 0x1) * (1 << pos));
n = n >> 1;
--pos;
}
return value;
}
uint32_t reverseBits(uint32_t n) {
uint32_t value = 0, pos = 31;

while (n > 0) {
value |= (n & 0x1) << pos;
n >>= 1;
--pos;
}
return value;
}