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

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

题目分析:书上说,在通常状况下,c++的键盘输入能够识别是十进制数、八进制数和十六进制数,所以输入的二进制数据要做为字符处理。(其实我以为数字也没问题吧)。c++

正确代码:(本身写的简单版,屡次犯错后得出的算是能够正确获得结果的版本)spa

 
 

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

 
 

int sum = 0;blog

 
 


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

 
 

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

 

以前犯错缘由:io

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

相关文章
相关标签/搜索