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 };

 

越努力,越幸运