十进制到二进制转换器c++

decimal to binary converter c++?

本文关键字:c++ 转换器 二进制 十进制      更新时间:2023-10-16
int inputNumber=0;
int divisionStore=0,modStore=0;
vector<int> mainVector;
cout << "nEnter a Number to Convert to Binary.n" << endl;
cin >> inputNumber;
do
{
    modStore=inputNumber%2;
    inputNumber=inputNumber/2;
    mainVector.push_back(modStore);
}while(inputNumber!=1);
for (int i=0;i<mainVector.size();i++)
{
    cout<<endl<<mainVector[i]<<endl;
}

似乎有一个逻辑错误,但我找不到错在哪里?程序没有打印正确的转换,因为循环似乎在它可以推入最后一个数字之前就结束了。

我认为你需要改变:

}while(inputNumber!=1)

:

}while(inputNumber!=0)

为什么不使用STL -即bitset

见http://www.cplusplus.com/reference/bitset/bitset/to_string/

可能在几行代码中完成!

似乎是一个非常复杂和低效的方法(如果我没有误解你的话)。您可能正在寻找位操作操作符,而不是/,%等。如果你真的想把它放在一个向量中,可以这样做:

while (inputNumber) {
  mainVector.push_back(inputNumber & 1);
  inputNumber >>= 1;
}

请注意,这将把最低有效位放在向量的开头,可能不是你想要的,但看起来这是你的代码试图做的。

我回答了类似的问题在这里,我使用递归函数

void decimal_to_binary(int decimal)
{
    int remainder = decimal % 2;
    if (decimal < 1)
        return;
    decimal_to_binary(decimal / 2);
    cout << remainder;
}

inputNumber%2是最低有效位,因此您的向量将以相反的顺序包含位。只需倒序循环vector。

while(inputNumber!=1) -你必须在inputNumber!=0时循环,否则你不会处理最后一位

  #include<iostream>
    using namespace std;
    int main(){
    int x,bin;
    x=0 ,bin=0;
           int ar[10000];
           cout<<"Enter Decimal Number "<<endl;
            cin>>x;
        int n=0;
            while(x>0){
                bin=x%2;
                x=x/2;
                ar[n]=bin;
                n++;
                }
cout<<endl;
n=n-1;
    for(n;n>=0;n--){
cout<<ar[n]; }
cout<<endl;
return 0;
}
/* Try this */