> For the complete documentation index, see [llms.txt](https://stanley7342.gitbook.io/programming/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://stanley7342.gitbook.io/programming/leetcode/190.-reverse-bits.md).

# 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?

## **解題思路**

{% hint style="info" %}

1. 我的解法比較像是韌體工程師的想法。
2. 當作是shift的方式移動32bit register 。
3. 把a register lsb塞給b register b的msb。
4. :)
   {% endhint %}

## 程式解答

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