C++整数高低位倒转
时间: 2024-08-25 10:00:56 浏览: 77
在C++中,整数高低位倒转通常是指将一个整数值的二进制表示从低位到高位(最低有效位到最高有效位)进行翻转的操作。这可以通过位运算来实现,因为位运算可以高效地处理二进制数据。
一个简单的做法是使用异或(XOR)操作。对于一个无符号整数`n`,你可以这样做:
```cpp
unsigned int reverseBits(unsigned int n) {
return n ? (reverseBits(n >> 1) << 1) | 1 : 0;
}
```
这个函数通过递归地将`n`右移一位,并在每次迭代时将结果左移一位并将最右边的位设置为1(即1 XOR 0),实现了低四位和高五位的交替翻转。
对于有符号整数,你需要额外处理符号位(最高位通常是符号位而不是实际的数据位)。可以先检查是否为负数,然后取补码再进行反转操作。
```cpp
int reverseSignAndBits(int n) {
if (n < 0) {
n = ~n + 1; // 取反加1得到正数的补码表示
}
return reverseBits(n);
}
```
在这个版本中,我们先对负数取反并加1将其转换为正数的补码形式,然后再进行位反转。
阅读全文