把一个二进制数转化为十进制数。
输入格式
第一行一个正整数 n\ (1\le n\le 30)n (1≤n≤30),表示二进制数的长度。
第二行一个二进制数。
输出格式
输出一个整数,表示对应的十进制数。
Sample Input
5 10101
Sample Output
21
#include<stdio.h>
#include<math.h>
int main()
{
int x,y,z,i,S=0;
scanf("%d",&x);//烧苗有几位数。
scanf("%d",&y);//输入指定几位数的二进制。
for(i=0;i<x;i++)
{
z=y%10;//从右开始一个一个的取余。
y=y/10;
S=S+z*pow(2,i);
}
printf("%d",S);
}
解题思路:
了解二进制的表达方法,转化为十进制就从右到左用二进制的每个数去乘以2的相应次方,小数点后则是从左往右。