二进制转换为十进制c语言
时间: 2024-10-06 18:03:39 浏览: 49
在C语言中,将二进制数转换为十进制数通常通过循环遍历每一位,并利用每位的权重计算总和。这里有一个简单的示例:
```c
#include <stdio.h>
#include <math.h>
// 函数用于将二进制字符串转换为十进制
int binaryToDecimal(char *binary) {
int decimal = 0;
int base = 1; // 从最低位开始,权重每次翻倍
// 遍历输入的二进制字符串
for (int i = strlen(binary) - 1; i >= 0; i--) {
if (binary[i] == '1') { // 如果当前位是1
decimal += base; // 加上该位的权重
}
base *= 2; // 移到下一位,权重翻倍
}
return decimal;
}
int main() {
char binaryNum[] = "1010"; // 举例二进制数
int decimalNum = binaryToDecimal(binaryNum);
printf("二进制 %s 转换成十进制是:%d\n", binaryNum, decimalNum);
return 0;
}
```
在这个例子中,`binaryToDecimal`函数接收一个表示二进制数的字符数组,然后通过从右向左遍历并累加权重的方式计算出对应的十进制值。
相关问题
二进制转换为十进制 C语言
二进制转换为十进制的方法是将每一位上的数值乘以2的对应次方,再将结果相加即可得到十进制数。例如,二进制数1101转换为十进制数的计算方法如下:
1*2^3 + 1*2^2 + 0*2^1 + 1*2^0 = 8 + 4 + 0 + 1 = 13
在C语言中,可以使用atoi()函数将二进制字符串转换为整数类型,如下所示:
```
#include <stdio.h>
#include <stdlib.h>
int main() {
char binary_str[] = "1101";
int decimal_num = strtol(binary_str, NULL, 2);
printf("Binary %s in decimal is %d\n", binary_str, decimal_num);
return 0;
}
```
上面的代码中,strtol()函数将二进制字符串binary_str转换为整数类型decimal_num,base参数指定了原字符串的进制,此处为2。注意,strtol()函数返回的是long int类型,需要进行强制类型转换才能存储到int类型的变量中。
二进制转换为十进制C语言代码
在C语言中,将二进制数转换成十进制可以使用循环和数学运算来进行。以下是一个简单的函数示例,它接收一个字符串形式的二进制数并返回其对应的十进制值:
```c
#include <stdio.h>
#include <string.h>
int binaryToDecimal(char* binaryStr) {
int decimal = 0;
int base = 1;
int len = strlen(binaryStr);
for (int i = len - 1; i >= 0; i--) {
if (binaryStr[i] == '1') {
decimal += base;
}
base *= 2; // 增加基数,因为下一位的权值是上一位的两倍
}
return decimal;
}
// 示例用法
int main() {
char binaryNum[] = "1010";
printf("Binary %s is equal to decimal %d\n", binaryNum, binaryToDecimal(binaryNum));
return 0;
}
```
这个程序从右向左遍历输入的二进制字符串,每次遇到'1'就将其对应的权重(当前`base`乘以2)加到`decimal`上。当遍历完整个二进制字符串后,就会得到十进制结果。
阅读全文