c ++中的二进制转换

时间:2014-12-26 17:37:18

标签: c++ binary

为了将给定数字转换为二进制,我编写了这段代码

//Binary conversion

int num,count=0;

int bi[15];
cout<<"Enter number";
cin>>num;
while(num>=1){
    bi[count]=num%2;
    num=num/2;
    count++;
}


for(int i=0;i<=count;i++){
    cout<<bi[count-i];
}   

但答案是错误的。它在前面给出了-85993460。

如果我想转换10,结果将是-859934601010。

有人可以指出这段代码的错误

2 个答案:

答案 0 :(得分:2)

i为零时,表达式count-i是数组最后一个条目之后的一个位置;这是未定义的行为,因此可以打印任意数字,例如-85993460,或者程序可能会崩溃。

要向后打印数组,请改用bi[count-1-i],并在达到计数时结束循环:

for(int i=0 ; i != count ; i++) {
    cout<<bi[count-1-i];
}

答案 1 :(得分:1)

你的循环限制是一个接一个 - 循环应该是

for(int i=1;i<=count;i++){
    cout<<bi[count-i];
}