使用 for 循环更改二进制数>十进制数

Changing Binary Number > Decimal Number Using For Loop

本文关键字:gt 十进制数 二进制数 for 循环 使用      更新时间:2023-10-16

我想将二进制号码更改为十进制数字。

我的问题是我的程序甚至不会输入for循环,因此我的总和总是0。我不知道我的for循环的错误在哪里。

我的想法是,对于像1010这样的数字,我将其除以10,并获得0个数字,然后用2^0乘以它,然后将1010除以10,为101和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;

大概是您邀请用户在控制台处输入二进制字符串。在这种情况下,您必须将数字作为字符串收集。

更像这样的东西?

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;
}
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;
    }