用C语言完成下面的题目 0目中会给你一个整数 n,你需要将登数 n用 32 位无符号整故二进制决表示,然后从它二进制展高位的工 开始到通低位,每一血反转,最后转换成十进制输出。
时间: 2024-10-18 16:09:41 浏览: 25
C语言中无符号与有符号及相加问题
在C语言中,你可以通过字符串操作和位运算来解决这个问题。首先,我们将数字转换为字符串,然后遍历字符串,对每一位进行反转。接着,再将字符串转换回整数。以下是完整的代码:
```c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// 将整数转换为逆序的二进制字符串
char* reverseBits(int num) {
static char result[33] = {0}; // 为了保存最长32位的结果
int i;
for (i = sizeof(result) - 1; num > 0; num >>= 1) {
result[i--] = num & 1 ? '1' : '0'; // 取最低位,反转
}
if (result[i] == '\0') result[i] = '0'; // 添加缺失的'0'位
return result;
}
// 主函数
int main() {
int n;
printf("请输入一个32位无符号整数: ");
scanf("%d", &n);
char* binaryStr = reverseBits(n);
int reversedNum = strtol(binaryStr, NULL, 2); // 将反转后的字符串转为整数
free(binaryStr); // 释放字符串内存
printf("反转后的二进制数转为十进制: %d\n", reversedNum);
return 0;
}
```
在这个代码中,我们首先使用`reverseBits`函数将整数的二进制表示反转,然后使用`strtol`函数将反转后的字符串转换回十进制。
阅读全文