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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://stanley7342.gitbook.io/programming/leetcode/190.-reverse-bits.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
