第1个回答 2012-07-16
从二进制的最低位开始依次乘以2的次方累计求和,
例如:二进制数1011101装换为10进制:从最低位开始,1*2^0+0*2^1+1*2^2+1*2^3+1*2^4+0*2^5+1*2^6=93(10)
//------------------c语言实现二进制转10进制
#include<stdio.h>
#include<string.h>
int BintoTen(char *str)
{//二进制转10进制
int i,j,k=1,sum=0;
j=strlen(str)-1;
for(i=j;i>=0;i--)
{
if('1'==str[i])//为1的处理,为零的部分不处理
sum+=1<<(k-1);//左移一位相当于乘以2,左移k-1位相当于乘以2的k-1次方
k++;
}
return sum;
}
int main()
{
char str[80];
int Ten;
scanf("%s",str);
Ten=BintoTen(str);
printf("%d",Ten);
return 0;
}本回答被网友采纳