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