printf каким-то образом преобразует двоичный код в десятичный
Вопрос новичка: почему я не могу получить printf
вывести двоичное число как есть, а не преобразовать его?
int gpa = 01011001;
printf("pure: %i \n", gpa);
дает вывод: 266753
Как я могу получить его на выходе 01011001 или просто 1011001?
2 ответа
Решение
0
перед целочисленным литералом держится окта-десятичное число. Десятичный эквивалент 01011001
является 266753
, Удалить это предыдущее 0
печатать как есть.
C не поддерживает двоичные константы (хотя отдельные компиляторы могут в качестве расширения).
Вместо этого вы можете использовать шестнадцатеричное обозначение:
int gpa = 0x59; // 01011001 binary
printf( " pure: %02x\n", gpa );
Если вы хотите отобразить значение в двоичном формате, вам придется свернуть свою собственную функцию вывода.