Я слежу за курсом колледжа об операционных системах, и мы учимся, как конвертировать из двоичного в шестнадцатеричное, десятичное в шестнадцатеричное и т.д., и сегодня мы просто узнали, как подписанные/неподписанные числа хранятся в памяти, используя два дополнения (~ число + 1).
У нас есть несколько упражнений, которые нужно сделать на бумаге, и я хотел бы иметь возможность проверить свои ответы, прежде чем отправлять свою работу учителю. Я написал программу на С++ для первых нескольких упражнений, но теперь я зациклился на том, как я могу проверить свой ответ со следующей проблемой:
char a, b;
short c;
a = -58;
c = -315;
b = a >> 3;
и нам нужно показать двоичное представление в памяти a
, b
и c
.
Я сделал это на бумаге и дал мне следующие результаты (все двоичные представления в памяти чисел после двух дополнений):
a = 00111010 (это a char, поэтому 1 байт)
b = 00001000 (это a char, поэтому 1 байт)
c = 11111110 11000101 (это короткий, так что 2 байта)
Есть ли способ проверить мой ответ? Есть стандартный способ на С++, чтобы показать двоичное представление в памяти числа или мне нужно каждый раз закодировать каждый шаг (вычислить два дополнения, а затем преобразовать в двоичные)? Я знаю, что последнее не займет так много времени, но мне любопытно, есть ли стандартный способ сделать это.