将二进制转成十进制,按权值展开求和即可。
可以通过以下代码解决:
#include
#include
int main()
{
char a[17];
gets(a);
int len,i,sum=0,m,j;
len=strlen(a);
if(len<=16)
{
for(i=0;i { m=1; if(a[i]=='1') { for(j=1;j<=len-i-1;j++) m*=2; sum+=m; } } printf("%d",sum); } return 0; }
#include
#include
#include
void fun()
{
int n=0,k=0,len;
char num[100];
gets(num);
len=strlen(num);
for(int i=len-1;i>=0;i--)
{
n=n+(num[i]-'0')*(int)pow(2.0,k);
k++;
}
printf("%d\n",n);
}
int main()
{
fun();
return 0;
}
#include
#include
#include
int main()
{
char str[33];
scanf("%s", str);
int len = strlen(str);
int i, sum=0;
for(i=0; i
sum += (str[i]-'0') * (int)pow(2, len-i-1);
}
printf("%d", sum);
}