c语言将二进制转为十进制数
时间: 2023-09-05 13:10:55 浏览: 122
好的,下面是将二进制字符串转换为十进制整数的 C 语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main() {
char binary[32];
printf("请输入一个二进制数:");
scanf("%s", binary);
int decimal = 0;
int len = strlen(binary);
for (int i = 0; i < len; i++) {
decimal += (binary[i] - '0') * pow(2, len - i - 1);
}
printf("转换后的十进制数为:%d\n", decimal);
return 0;
}
```
在这个代码中,我们先通过 `scanf` 函数获取用户输入的二进制数,然后遍历二进制字符串中的每一位,将每一位乘以对应的权重(2 的幂次方),并将它们相加得到最终的十进制数。最后,我们输出转换后的十进制数。
需要注意的是,在转换时我们将二进制字符串中的字符 `'0'` 转换为整数 0,将字符 `'1'` 转换为整数 1。这里使用了 `pow` 函数计算幂次方,需要包含 `math.h` 头文件。
相关问题
c语言中十六进制转为二进制
在C语言中,将十六进制数转换为二进制数可以通过内置函数或者手动转换实现。下面是两种常见的方法:
**方法一:使用内置函数**
C语言标准库中的`itoa()`函数可以将整型转换为字符串,包括十六进制或十进制。你可以先用`printf()`函数输出十六进制,然后利用`itoa()`和`strtoul()`或`strtol()`函数将其转换为二进制字符串。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void hex_to_bin(const char *hex_str, int base) {
char bin_str[64]; // 预计最大32位整数的二进制表示
size_t len;
// 转换为二进制
len = sprintf(bin_str, "%b", strtoul(hex_str, NULL, base));
printf("Hex: %s\nBinary: %s\n", hex_str, bin_str);
}
int main() {
char hex_num[] = "FF";
hex_to_bin(hex_num, 16);
return 0;
}
```
**方法二:手动转换**
如果你需要手动转换,可以遍历十六进制数,并根据每一位的十六进制值转换成四位的二进制数。
```c
#include <stdio.h>
#include <string.h>
void hex_to_bin_manual(const char *hex_str) {
for (int i = 0; hex_str[i]; ++i) {
int digit = hex_str[i] - '0'; // 处理数字0-9
if (hex_str[i] >= 'A' && hex_str[i] <= 'F') {
digit = hex_str[i] - 'A' + 10; // 处理字母A-F
}
printf("%d", digit << 4); // 左移四位,对应二进制的高四位
printf("%d", digit); // 再左移四位,对应二进制的低四位
}
printf("\n");
}
int main() {
char hex_num[] = "FF";
hex_to_bin_manual(hex_num);
return 0;
}
```
用c语言将十进制数转为二级制
在C语言中,将十进制数转换为二进制可以采用递归法或循环迭代法。这里是一个简单的非递归版本的示例,利用`while`循环实现:
```c
#include <stdio.h>
// 函数用于将十进制数转换为二进制字符串
void dec_to_bin(int num, char binary[]) {
if (num == 0) {
binary[0] = '\0'; // 结束字符串
return;
}
// 将当前最低位数字添加到结果
binary[num / 2] = (num % 2) + '0';
// 继续处理下一位,直到num变为0
dec_to_bin(num / 2, binary);
}
int main() {
int decimal_num;
printf("请输入一个十进制数: ");
scanf("%d", &decimal_num);
// 初始化足够大的数组存储二进制结果,并加一个空字符作为结尾
char binary[32];
binary[31] = '\0';
dec_to_bin(decimal_num, binary); // 转换
printf("该十进制数的二进制形式是: %s\n", binary);
return 0;
}
```
当你运行这个程序时,它会提示你输入一个十进制数,然后显示其对应的二进制表示。
阅读全文