Как эта сумма равна в двоичном без знака и двоичном дополнении?
Я читаю книгу по компьютерной архитектуре и наткнулся на следующее:
Предположим, у вас есть 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
, Не смущайтесь.