190. Reverse Bits

題目原文

Reverse bits of a given 32 bits unsigned integer.

Example:

Input: 43261596
Output: 964176192
Explanation: 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. 我的解法比較像是韌體工程師的想法。

  2. 當作是shift的方式移動32bit register 。

  3. 把a register lsb塞給b register b的msb。

  4. :)

程式解答

class Solution 
{
public:
    uint32_t reverseBits(uint32_t n) 
    {
        uint32_t cnt = 0xffffffff;
        uint32_t bit = 0;
        uint32_t ans = 0;
        
        while (cnt)
        {
            bit = n % 2;
            ans <<= 1;
            ans += bit;
            cnt >>= 1;
            n >>= 1;
        }
            
        return ans;
    }
};

Last updated

Was this helpful?