Это простая программа для преобразования положительного десятичного числа в двоичное. Я должен сообщать и останавливать преобразование тех чисел, которые могут вызвать переполнение или ошибочные результаты. Я обнаружил, что размер целого составляет 4 байта, но он преобразуется правильно только до 1023. Я смущаюсь, откуда пришел номер «1023»? Есть ли какой-либо метод для расчета, поэтому я могу предсказать, какой будет правильный диапазон, если, скажем, я программирую на другой системе.Целочисленный диапазон и переполнение
#include<stdio.h>
int main(void)
{
int decimal,binary=0,y,m=1;
scanf("%d",&decimal);
if(decimal<=1023)
{
while(decimal>0)
{
y=decimal%2;
binary=binary+(m*y);
m=m*10;
decimal=decimal/2;
}
printf("\nBinary Equivalent is: %d",binary);
}
else
{printf("Sorry, The Number You've entered exceeds the maximum allowable range for conversion");}
getch();
return 0;
}
Может ли _could_ использовать 'if (decimal <= 2047) ... m = m * 8; ... "Двоичный эквивалент:% o" 'для еще одной цифры. – chux