郑州轻工业大学oj题解(c语言)1068:|郑州轻工业大学oj题解(c语言)1068: 二进制数
写在题目前:
今天是更文的第30天,也是日更的27天。刚更新完目录,发现自己各种题解大大小小写了也有32篇了,也算完成一个小目标了,希望接下来能继续完成100篇的目标吧~加油。
1068: 二进制数
- 题目描述
将一个二进制数,转换为对应的十进制数。 - 输入
输入一个二进制数,以回车结束。该二进制数为正数,长度不超过31。 - 输出
输出一个整数,为该二进制数对应的十进制数。 - 参考代码:
#include
using namespace std;
int main()
{
int d, a;
d = 0;
while( a =getchar(), a != '\n'){
d= d * 2 + (a - '0');
}
printf("%d",d);
return 0;
}
- 代码解析:
a=getchar()代表读取一个字符进入a中。这里是因为不知道输入的二进制数的长度所以只能这样去进行输入。 - 后面的d=d*2+(a-‘0’);是二进制转十进制的其中一个环节,这里使用一个递归,让二进制的每一位数不断重复此环节,并加进d中,我们最后就可以得出二进制a的十进制数d。
- 至于二进制如何转换成十进制,不懂公式的同学可以参考这篇文章。这里仅作简单的介绍:二进制从高位开始计算,第一位就是最后的商 “2/2 = 1 余0 “,余数肯定是加零。其他位数如果有”1“(原来的余数),就先乘以”2“再加”1“。
【郑州轻工业大学oj题解(c语言)1068:|郑州轻工业大学oj题解(c语言)1068: 二进制数】例如 100101110
1…………0
2+1=1…………余数为1
0…………1
2+0=2………… 余数为0
0 …………2
2+0=4 ………… 余数为0
1 …………4x2+1=9……………… 余数为1
0…………9x2+0=18 ……………… 余数为0
1 …………18
2+1=37 …………余数为1
1…………… 37
2+1=75…………余数为1
1………………75
2+1=151………… 余数为1
0………………151
2+0=302 ………… 余0
所以得到十进制数302。
推荐阅读
- 螃蟹和这些食物同吃,轻则腹泻、重则中毒!要小心哦~
- 慢煮岁月,浅思淡行
- 年轻人,干了孤独这杯酒
- 松软可口易消化,无需烤箱超简单,新手麻麻也能轻松成功~
- 年轻人对未来迷茫时该怎么办()
- 私有化轻量级持续集成部署方案--03-部署web服务(下)
- 生命中最迷人的部分轻拿轻放
- 知若不知
- 年轻的我们应该享受还是奋斗()
- 医生随笔(232)不要轻易得罪底层人