函数原型如下:
double binTodec(char *str);
其中str为接收的二进制数,函数的返回值为对应的十进制数。
如输入:
1010
则输出为:
10.000000
又如输入:
100.11
则输出为:
4.75
double binTodec(char *str)
{
int i = 0, j;
double p1 = 1, p2 = 0.5;
double res = 0;
while(str[i]!='\0' && str[i]!='.')
j = i++;
do{
res += (str[j--]-'0')*p1; // 计算整数
p1 *= 2;
}while(j >= 0);
if(str[i] == '.')
{
do{
res += (str[++i]-'0')*p2; // 计算小数
p2 /= 2;
}while(str[i+1] != '\0');
}
return res;
}
{
int i = 0, j;
double p1 = 1, p2 = 0.5;
double res = 0;
while(str[i]!='\0' && str[i]!='.')
j = i++;
do{
res += (str[j--]-'0')*p1; // 计算整数
p1 *= 2;
}while(j >= 0);
if(str[i] == '.')
{
do{
res += (str[++i]-'0')*p2; // 计算小数
p2 /= 2;
}while(str[i+1] != '\0');
}
return res;
}
温馨提示:答案为网友推荐,仅供参考