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?
1 class Solution { 2 public: 3 uint32_t reverseBits(uint32_t n) { 4 uint32_t bit[32]={0}; 5 uint32_t ret=0; 6 7 int mid=1; 8 9 for(int i=0;i<32;i++) 10 { 11 bit[i]=(n>>i)&1; 12 } 13 14 for(int j=31;j>=0;j--) 15 { 16 ret=ret+bit[j]*mid; 17 mid=mid*2; 18 } 19 20 return ret; 21 22 } 23 };