把一个二进制数转化为十进制数。
输入格式
第一行一个正整数 n\ (1\le n\le 30)n (1≤n≤30),表示二进制数的长度。
第二行一个二进制数。
输出格式
输出一个整数,表示对应的十进制数。
Sample Input
5 10101
Sample Output
21
思路:运用分解位数的知识二进制转换为十进制就是倒叙乘以2的零次方,每次加一再将它们累和。
#include<stdio.h>
#include<math.h>
int main()
{
int i,n,m,x=0,a;
scanf("%d",&n); //输入一个n位数
scanf("%d",&m); //输入二进制数
for(i=0;m!=0;i++)
{
a=m%10; //算出每个数
x=(a)*(pow(2,i))+x; //转换为十进制
m=m/10;
}
printf("%d",x);
return 0;
}