c++反转二进制数
时间: 2025-08-10 14:57:24 AIGC 浏览: 13
在 C++ 中实现二进制数的反转可以通过多种方式完成,以下是两种常见的实现方法:
### 方法一:基于十进制运算的二进制反转
此方法类似于十进制数的反转逻辑,通过依次提取低位并构建结果来实现二进制数的反转。
```cpp
#include <iostream>
using namespace std;
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
int i = 32;
uint32_t res = 0;
while (i--) {
res = res * 2 + n % 2; // 提取低位并构建反转结果
n = n / 2;
}
return res;
}
};
```
该方法通过循环 32 次(因为 `uint32_t` 是 32 位无符号整数)来处理每一位,将输入数的每一位提取出来并逐步构建反转后的结果[^1]。
---
### 方法二:使用位运算进行二进制反转
此方法利用位运算操作,通过移位和按位与操作来提取每一位并构建反转结果。
```cpp
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
uint32_t rn = 0;
for (int i = 0; i < 32; i++) {
rn <<= 1; // 将结果左移一位,为下一位腾出空间
rn += (n & 0x01); // 提取当前最低位并加入结果中
n >>= 1; // 输入右移一位,处理下一位
}
return rn;
}
};
```
此方法通过逐位提取输入数的最低位,并将其添加到结果的最低位,然后将结果左移一位,从而实现完整的 32 位反转[^4]。
---
### 示例用法
以下是如何使用上述方法的简单示例:
```cpp
int main() {
Solution sol;
uint32_t n = 0b0000001010010100000111010011100; // 示例输入
uint32_t reversed = sol.reverseBits(n);
cout << "Reversed binary number: " << reversed << endl;
return 0;
}
```
该程序将输出反转后的二进制数。
---
### 总结
- 方法一更接近十进制反转的逻辑,适用于理解二进制反转的基本思想。
- 方法二利用位运算,效率更高,适用于实际开发中的性能优化。
两种方法都能有效实现二进制数的反转,具体选择取决于应用场景和性能需求。
---
阅读全文
相关推荐



















