已知一个只包含0和1的二进制数,二进制数的长度不大于10。你的任务是将其转换为十进制数并打印出来。 提示:用除法和求余运算每次从右到左获取二进制整数的各位数字。在十进制数值系统中,最右边的数字是个位,个位的左边依次是十位、百位、千位等等。与之类似,在二进制数值系统中,最右边的数字是1位,左边的数字依次为2位、4位、8位等等。十进制数234可分解为4*100+3*101+2*102,二进制数1101可分解为1*20+0*21+1*22+1*23,它等价于十进制数1+0+4+8,即13。
输入格式:
为一个只包含0和1的整数n(长度不超过10位),代表二进制数。
输出格式:
为转换得到的十进制数。
样例">样例">样例">样例">样例">输入样例:
11111
输出样例:
在这里给出相应的输出。例如:
31
代码如下:
#include<stdio.h>
#define jin 2
int main()
{
int n,i,sum=0;
scanf("%d", &n);
for (i = 0; n > 0; i++)
{
sum = sum * jin + n % 10;
n /= 10;
}
printf("%d", sum);
return 0;
}
这里要明白二进制的意义
后面我还会 写十进制转其他进制的代码
这里扩展一下,写其他进制转10进制,只需要把jin改成其他进值
比如:
把八进制的数转换为十进制
#include<stdio.h>
#define jin 8
int main()
{
int n,i,sum=0;
scanf("%d", &n);
for (i = 0; n > 0; i++)
{
sum = sum * jin + n % 10;
n /= 10;
}
printf("%d", sum);
return 0;
}
十六进制及其他都满足这个规律