我想将二进制数更改为十进制数。
我的问题是我的程序甚至不会进入for
循环,因此我的总和总是0.我不知道我的for
循环的错误在哪里。
我的想法是,对于像1010这样的数字,我将它除以10并得到最后一位数字0,然后将其乘以2 ^ 0,然后将1010除以10得到101并且循环继续。
这是我到目前为止所尝试的内容:
cout<<"Please Enter a Binary Digit Number"<<endl;
cin>>num;
sum=0;
x=0;
for (int i=num; i/10 == 0; i/10) {
sum+=num%10*2^x;
num/=10;
x++;
}
cout<<sum;
答案 0 :(得分:1)
据推测,您邀请用户在控制台输入二进制字符串。在这种情况下,您必须将数字收集为一串字符。
更像这样的东西?
using namespace std;
std::string bin;
cout<<"Please Enter a Binary Digit Number"<<endl;
cin>>bin;
int sum=0;
int bit=1;
for (auto current = std::rbegin(bin) ; current != std::rend(bin) ; ++current, bit <<= 1)
{
if (*current != '0')
sum |= bit;
}
cout<<sum << std::endl;
或在c ++ 11之前(我认为这是一个学校项目 - 他们可能有过时的工具包):
for (auto current = bin.rbegin() ; current != bin.rend() ; ++current, bit <<= 1)
{
if (*current != '0')
sum |= bit;
}
答案 1 :(得分:0)
working:-
#include<iostream>
using namespace std;
int num,sum,x;
int main()
{
cout<<"Please Enter a Binary Digit Number"<<endl;
cin>>num;
sum=0;
x=0;
long base=1,dec=0;
//Binary number stored in num variable will be in loop until its value reduces to 0
while(num>0)
{
sum=num%10;
//decimal value summed ip on every iteration
dec = dec + sum * base;
//in every iteration power of 2 increases
base = base * 2;
//remaining binary number to be converted to decimal
num = num / 10;
x++;
}
cout<<dec;
return 0;
}