您的位置:首页 > 其它

[理解leetcode解法]190. Reverse Bits 数字翻转

2016-03-02 15:13 489 查看

190. Reverse Bits 数字翻转

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?

Related problem: Reverse Integer

解法如下

class Solution{
public:
 uint32_t reverseBits(uint32_t n){
  if (!n)return n;
  int num=31;
  uint32_t tmp=0;
  while (n > 0){                        //1
   tmp |= (n & 0x1) << num;
   n >>= 1;
   num--;
  }
  return tmp;
 }
};


//1:
先取出最后一位,然后左移31位
n右移一位
再取出最后一位,然后左移30位.........如此类推
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode