Как эта сумма равна в двоичном без знака и двоичном дополнении?

Я читаю книгу по компьютерной архитектуре и наткнулся на следующее:

Предположим, у вас есть 8-битная ячейка. Таким образом, существует 256 возможных целочисленных значений. Неотрицательные значения варьируются от 0 до 127. Предполагая двоичное представление в виде двоичного дополнения, какова сумма 97 + 45?

Без знака ясно 142, вы можете сделать это как 97 + 45 в десятичном виде, или:

0110 0001
0010 1101 ADD
--------------
1000 1110

Но когда вы выполняете два дополнения, вы берете этот результат (1000 1110) и определите, что он отрицательный, поскольку бит знака равен 1. Затем возьмите его в дополнение к нему:

NOT 1000 1110 = 0111 0001

Затем определите его два дополнения:

0111 0001
0000 0001 ADD
--------------
0111 0010

Этот номер 114 но потому что наш оригинальный номер имел 1 в знаке бит это -114,

Вопросы):

Зачем проходить через все трудности, чтобы иметь два дополнения, чтобы найти -114? Начиная с 97 и 45, почему бы просто не найти сумму двух натуральных чисел в виде значения без знака, которое находится в пределах диапазона 8-битной ячейки (1111 1111 являющийся 255). Это только потому, что вопрос требует дополнения двух?

Является -114 эквивалентно 142? Я верю, что если вы возьмете номер строки с двумя дополнениями, вы получите 142-256 который -114, Исходя из этого, я не понимаю, почему вы хотели бы даже использовать два дополнения, если вы суммируете два положительных значения!

1 ответ

Решение

Дополнение 1 означает просто перевернуть все биты, а дополнение 2 означает отрицание значения. Таким образом, дополнение 1 для 8-битных результатов эффективно в 255 - x и 2 в 256 - x, Вы достигаете результата дополнения 2, выполняя дополнение 1 и добавляя 1,

142 в 8-битном равно -114, Не смущайтесь.

Другие вопросы по тегам