编程高低位交换怎么写

时间:2025-03-03 18:05:59 明星趣事

高低位交换的代码实现如下:

使用位运算实现高低位交换

可以使用位运算符如按位与(&)、按位或(|)和移位(<<、>>)来实现高低位交换。

例如,对于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;

}

```

以上是几种常见的高低位交换的实现方法。可以根据具体需求和场景选择合适的方法。