Двоичное преобразование в c ++

0

Чтобы преобразовать заданное число в двоичный код, я написал этот код

//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, результатом будет -85993460 1010.

Может кто-нибудь, пожалуйста, укажите, что не так с этим кодом

  • 1
    @Lashane Уверены насчет i<=count ?
  • 0
    @ πάνταῥεῖ нет, должно быть просто <
Теги:
binary

2 ответа

2
Лучший ответ

Когда i равно нулю, выражение count-i является одной позицией после последней записи массива; это неопределенное поведение, поэтому может быть напечатано произвольное число, например -85993460, или программа может выйти из строя.

Чтобы напечатать массив назад, используйте bi[count-1-i] вместо этого и завершите цикл, достигнув count:

for(int i=0 ; i != count ; i++) {
    cout<<bi[count-1-i];
}
  • 0
    Спасибо. Когда я пытался найти ошибку, я проверял код до num = 1, но потом забыл увеличить счетчик. Вот почему я не смог найти ошибку.
1

Пределы вашего контура выходят за рамки - цикл должен быть

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню