将任意数制转化为10进制C语言,不用函数
时间: 2024-10-26 08:02:30 浏览: 11
顺序栈、链栈将10进制转为2、8、16进制源码
5星 · 资源好评率100%
在C语言中,将任意数制(如二进制、八进制、十六进制)转换成十进制,可以利用位运算来逐位相加。以下是一个简单的示例,演示如何将字符串形式的二进制数转换为十进制:
```c
#include <stdio.h>
#include <string.h>
int binaryToDecimal(char *binary) {
int decimal = 0;
int base = 1; // 代表每一位的权值从右往左依次递增
// 遍历输入的二进制字符串
for (int i = strlen(binary) - 1; i >= 0; i--) {
if (binary[i] == '1') {
decimal += base; // 如果当前位是1,累加对应的权值
}
base *= 2; // 每次循环权值翻倍
}
return decimal;
}
int main() {
char binaryNum[] = "1010"; // 示例二进制数
int decimalNum = binaryToDecimal(binaryNum);
printf("Binary %s is equal to decimal %d.\n", binaryNum, decimalNum);
return 0;
}
```
在这个例子中,我们创建了一个名为`binaryToDecimal`的函数,它接受一个指向二进制字符串的指针,然后通过遍历字符串,每次将对应位的值(如果是'1')乘以当前的权重(`base`),并累加到`decimal`上。最后返回得到的十进制数值。
阅读全文