标签:
Reverse bits of a given 32 bits unsigned integer.
For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 964176192 (represented in binary as00111001011110000010100101000000).
Follow up:
If this function is called many times, how would you optimize it?
Related problem: Reverse Integer
Solution 1:
1 class Solution { 2 public: 3 uint32_t reverseBits(uint32_t n) { //runtime:4ms 4 unsigned ret = 0; 5 unsigned x = 1 << 31; 6 unsigned y = 1; 7 while(x){ 8 if(x & n)ret |= y; //或ret += y; 9 x >>= 1; 10 y <<= 1; 11 } 12 return ret; 13 } 14 };
Solution 2:
1 class Solution { 2 public: 3 uint32_t reverseBits(uint32_t n) { //runtime:4ms 4 unsigned int bit = 0; 5 unsigned int result = 0; 6 while(bit<32) 7 { 8 if((n>>bit) & 1 == 1) 9 result = result + (1<<(31-bit)); 10 bit ++; 11 } 12 13 return result; 14 } 15 };
标签:
原文地址:http://www.cnblogs.com/irun/p/4700825.html