题目要求
把一个二进制数转化为十进制数。
输入格式
第一行一个正整数 (1≤n≤30),表示二进制数的长度。
第二行一个二进制数。
输出格式
输出一个整数,表示对应的十进制数。
Sample Input
5 10101
Sample Output
21
从二进制数的最高位进行逐位计算,通过乘二相加的方式可以算出结果。
#include<stdio.h>
int main(void)
{
int a;
scanf("%d",&a); //输入二进制数的位数
int sum = 0;
getchar(); //接收多余的空格
char b[30];
gets(b); //用字符串接收二进制数
int i;
for(i=0;i<a;i++){
sum*=2;
sum+=b[i]-'0'; //进行运算
}
printf("%d\n",sum);
return 0;
}