高低位交换的代码实现如下:
使用位运算实现高低位交换
可以使用位运算符如按位与(&)、按位或(|)和移位(<<、>>)来实现高低位交换。
例如,对于32位无符号整数,可以通过右移16位和左移16位来实现高低位交换。
```cpp
include
unsigned int reverseBits(unsigned int n) {
return (n >> 16) | (n << 16);
}
int main() {
unsigned int num;
std::cout << "请输入一个无符号整数: ";
std::cin >> num;
unsigned int reversed = reverseBits(num);
std::cout << "高低位交换后的结果是: " << reversed << std::endl;
return 0;
}
```
使用循环和位运算实现高低位交换
也可以通过循环和位运算来实现高低位交换。
例如,可以通过循环将每一位从高位和低位取出,然后重新组合成新的数。
```cpp
include
unsigned int reverseBits(unsigned int n) {
unsigned int reversed = 0;
for (int i = 0; i < 32; ++i) {
reversed = (reversed << 1) | (n & 1);
n >>= 1;
}
return reversed;
}
int main() {
unsigned int num;
std::cout << "请输入一个无符号整数: ";
std::cin >> num;
unsigned int reversed = reverseBits(num);
std::cout << "高低位交换后的结果是: " << reversed << std::endl;
return 0;
}
```
使用递归实现高低位交换
还可以通过递归的方式实现高低位交换。
例如,可以先递归处理高16位,然后递归处理低16位,最后将结果组合起来。
```cpp
include
unsigned int reverseBits(unsigned int n) {
if (n == 0) return 0;
return (reverseBits(n >> 16) << 16) | (n & 0xffff);
}
int main() {
unsigned int num;
std::cout << "请输入一个无符号整数: ";
std::cin >> num;
unsigned int reversed = reverseBits(num);
std::cout << "高低位交换后的结果是: " << reversed << std::endl;
return 0;
}
```
以上是几种常见的高低位交换的实现方法。可以根据具体需求和场景选择合适的方法。