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

时间:2013-05-19 07:57:09

标签: c++ binary decimal

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

似乎有一个逻辑错误,但我找不到它的错误?程序没有打印正确的转换,因为它似乎循环结束才能推送最后一个数字。

6 个答案:

答案 0 :(得分:4)

我认为你需要改变:

}while(inputNumber!=1)

为:

}while(inputNumber!=0)

答案 1 :(得分:2)

为什么不使用STL - 即bitset

请参阅http://www.cplusplus.com/reference/bitset/bitset/to_string/

可能需要几行代码才能完成!

答案 2 :(得分:0)

接缝是一种非常复杂和低效的方式(如果我不误解你的话)。你可能正在寻找位操作运算符,而不是/,%等。如果你真的想把它粘在一个向量中,那么应该这样做:

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

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

答案 3 :(得分:0)

我回答了类似问题Here,我使用了递归函数

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

答案 4 :(得分:0)

inputNumber%2是最低有效位,因此向量将包含相反顺序的位。只需按相反顺序循环矢量即可。

while(inputNumber!=1) - 您必须在inputNumber!=0时循环播放,否则您将无法处理最后一位。

答案 5 :(得分: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 */