Я готовлюсь к экзамену и хочу проверить свои ответы на этот вопрос:
Предположим, двоичные значения представляют собой 8-битные значения со знаком, представляющие формат с дополнением до двух с десятичным диапазоном от -128 до 127. Какие из следующих утверждений верны / неверны?
1) 11111111 > 0111111
Я думаю, что это неверно, потому что первая цифра представляет знак, поэтому мы сравниваем отрицательное значение с положительным.
2) (11111111 + 11111111) > (00000001 - 00000010)
Я не уверен насчет этого, потому что не знаю, что происходит, когда он переполняется. Думаю, компьютер просто отбрасывает последнюю цифру. Итак, я думаю, что левая часть равна -128 - 128 = -256. Тогда правая часть равна 1-2 = -1, что представляется как 1000001. Это означает, что неравенство в десятичной дроби становится -256> -1, что неверно. Но опять же, я не так уверен в этом.
3) (10000000 / 00000100) == 11100000
Первая часть равна -0/4, а вторая ненулевая, так что это будет ложью?
Кроме того, есть только примеры задач, и я хотел бы попрактиковаться / изучить самостоятельно. Есть ли способ написать программу на C ++, чтобы увидеть ожидаемый результат вопросов этой формы?
Спасибо.
11111111
представляет-1
в дополнении до двух, а не-127
(или-128
, но он не представляет-128
ни в одной системе, о которой я могу думать). Точно так же битовая комбинация10000000
представляет-128
, а не-0
. Не существует-0
в двух дополнениях. - person Miles Budnek   schedule 26.09.2019(-1 + -1)
в десятичном виде, а RHS-1
, поэтому ответ неверен - person oompa   schedule 26.09.2019