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

时间:2018-09-23 17:18:41

标签: c++

我正在创建这个程序只是为了娱乐,但我遇到了问题

#include <iostream>
#include <vector>
using namespace std;
int main()
{
int j = 1;
std::vector<int> n_bin(j);
int n=0; 
int a;
cin>>n;
do
{

    n_bin[j] = n%2;
    n= n/2;
    a++;
    j++;

}while(n>0);

for(j=a; j>0; j--)
{

    cout<<n_bin[j];
}

return 0;

} 唯一的问题是输出,实际上在实际二进制数之前,我得到了更多的数字,例如: 如果我将104分配给n,我得到:246978862916874543020108190880108137760108190884026797651687454302000108137760108191524026797651687454304302183600828414839627280108137760146978862716874543020001321208800108136960-10108137760760108364961101000其中仅最后7个有用。

2 个答案:

答案 0 :(得分:3)

n_bin被初始化为在n_bin[0]处只有一个元素。通过访问索引超出范围,n_bin[j]对于j的除0以外的任何值都表现出不确定的行为。

答案 1 :(得分:0)

void decToBinary(int n) 
{
    int binaryNum[1000];
    int i = 0;
    while(n > 0) 
    {
        binaryNum[i] = n % 2;
        n = n / 2;
        i++;
    }
    for(int j = i - 1; j >= 0; j--)
    {
        cout << binaryNum[j];
    }
}