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 k = 0, num = 1; 5 while(num <= 32){ 6 if(k == 0) 7 k = n & 1; 8 else 9 k = (k << 1) | (n & 1); 10 n >>= 1; 11 num++; 12 } 13 return k; 14 15 } 16 };