C语言二进制高低位互换,例如将10110101置换为10101101
时间: 2024-08-15 17:04:13 浏览: 64
在C语言中,二进制高低位互换可以通过位操作实现,通常利用异或(XOR)和移位(Shift)操作来完成。下面是一个简单的函数示例,它接受一个整数作为输入,然后将其高位和低位进行交换:
```c
#include <stdio.h>
// 定义一个函数来交换二进制数的高低位
unsigned int swapBits(unsigned int num) {
// 将原数转换为无符号短整型和无符号字节型,以便逐字节处理
unsigned short ushorts = {num & 0xffff, num >> 16};
// 对每个字节进行位操作
for (int i = 0; i < sizeof(ushorts); i++) {
// 使用XOR操作交换最高位和最低位
ushorts[i] = ushorts[i] ^ ((ushorts[i] << 8) | (ushorts[i] >> 8));
}
// 合并两个字节并返回结果
return ushorts | (ushorts << 16);
}
int main() {
unsigned int originalNum = 0b10110101;
unsigned int swappedNum = swapBits(originalNum);
printf("Original binary: %u\n", originalNum);
printf("Swapped binary: %u\n", swappedNum);
return 0;
}
```
在这个例子中,`swapBits`函数会打印出原数 `10110101` 和经过位运算后的交换版本 `10101101`。
阅读全文