Чтобы преобразовать заданное число в двоичный код, я написал этот код
//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.
Может кто-нибудь, пожалуйста, укажите, что не так с этим кодом
Когда i
равно нулю, выражение count-i
является одной позицией после последней записи массива; это неопределенное поведение, поэтому может быть напечатано произвольное число, например -85993460, или программа может выйти из строя.
Чтобы напечатать массив назад, используйте bi[count-1-i]
вместо этого и завершите цикл, достигнув count:
for(int i=0 ; i != count ; i++) {
cout<<bi[count-1-i];
}
Пределы вашего контура выходят за рамки - цикл должен быть
for(int i=1;i<=count;i++){
cout<<bi[count-i];
}
i<=count
?<