Я слежу за курсом в колледже по операционным системам, и мы учимся конвертировать из двоичного в шестнадцатеричный, десятичный в шестнадцатеричный и т. Д., И сегодня мы только что узнали, как числа со знаком / без знака хранятся в памяти с использованием дополнения до двух (~ число + 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
) манипулятора - я оставлю это как упражнение, чтобы вы отработали остальное ... - person Nim   schedule 08.09.2011