输入二进制数转换成十进制数(在cin>>和cin.get()上掉的坑)

题目:输入一个二进制数转换成十进制。

题目分析:书上说,在一般情况下,c++的键盘输入可以识别是十进制数、八进制数和十六进制数,因此输入的二进制数据要作为字符处理。(其实我觉得数字也没问题吧)。

正确代码:(自己写的简单版,多次犯错后得出的算是可以正确得到结果的版本)

 
  

#include<iostream>
using namespace std;
int main()
{
char bin;
cout << "Binary:" << endl;
cin >> bin; //实际上只读取了输入数字中的最左边第一位

 
  

int sum = 0;

 
  


while (bin == '0' || bin == '1')
{
sum += (bin - '0');        //累加
cin.get(bin);              //获取下一位数字
if (bin == '0' || bin == '1')     //判断是否存在下一位数字
{
sum *= 2;                         //一转换的数据左移一位    
}

 
  

}
cout <<"Decimal:"<< sum;
system("pause");
}

 
 

之前犯错原因:

 不清楚cin>>和cin.get()的用法,在使用了cin>>bin;获取了二进制数字的输入后再次使用了cin.get(bin);,实际上导致最左边的一位数字没有得到转换,只转换了右边剩下的数字。

 

转载于:https://www.cnblogs.com/urahyou/p/9992620.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值