Объяснение:
Здесь полная аналогия с тем, как мы складываем в обычной, десятичной системе. Объясню лучше на примере.
Мы знаем, что можно складывать числа "в столбик":
24
+13
37
то есть строго разряд под разрядом. Но что мы делаем, когда в одном разряде получается число, больше 9? Правильно, переносим десяток в старший разряд!
15
+19
24 (не 214!)
Здесь та же ситуация, отличие только в том, что максимальная цифра в разряде равна 7 (как в нашей десятичной записи максимальная цифра в записи разряда равна 9, а следующее число - 10 - уже состоит из двух цифр в записи - 1 и 0). Значит, если мы хотим записать число 8 в восьмеричной записи, мы напишем это как 10₈ (нижний индекс показывает систему счисления)
А теперь попробуем сложить два числа в восьмеричной системе:
21₈
+ 16₈
37₈
Разряд под разрядом, ничего сложно. А давайте возьмем пример поинтереснее:
77₈
+ 77₈
7₈ + 7₈ = 16₈, это значит, что в младшем разряде мы напишем 6, а десятки припишем в старший разряд.
1
77₈
+ 77₈
*6
Так как 7₈ + 7₈ + 1₈ = 17₈, то 7 записываем в свой, соответствующий, разряд, а единицу в старший, получив при этом ответ 176₈
В правильности ответа можем убедиться, переведя это все в десятичную запись: 77₈ = 63, 176₈ = 126, 63 + 63 = 126, все верно.
Единственный дискомфорт при таком методе - непривычные результаты сложения. Например, 7 + 7 = 14 (в десятичной записи), но в примере выше 7₈ + 7₈ = 16₈. Поэтому тут нужно быть аккуратным!
а) представим -17₁₀ в обратном коде на 8-битном регистре
- запишем число 17₁₀ в двоичной системе: 10001₂
- дополним его слева нулями до 8 знаков: 00010001
- поскольку число отрицательное, инвертируем каждый разряд, т.е. заменяем 0 на 1, а 1 на 0: 11101110
б) представим 22 в обратном коде на 8-битном регистре
- запишем число 22₁₀ в двоичной системе: 10110₂
- дополним его слева нулями до 8 знаков: 00010110
- поскольку число положительное, его не нужно менять.
в) выполняем сложение
Возник перенос в девятый разряд, которого у нас нет (т.е. фактически произошло переполнение регистра). В этом случае перенос нужно осуществить в младший разряд, т.е. сложить результат с единицей
и окончательно получим 00000101
Задание 2.
а) представим -17₁₀ в дополнительном коде на 8-битном регистре
- запишем число 17₁₀ в двоичной системе: 10001₂
- дополним его слева нулями до 8 знаков: 00010001
- поскольку число отрицательное, инвертируем каждый разряд, т.е. заменяем 0 на 1, а 1 на 0: 11101110
- прибавляем единицу в младший разряд: 11101111
б) представим 22 в дополнительном коде на 8-битном регистре
- запишем число 22₁₀ в двоичной системе: 10110₂
- дополним его слева нулями до 8 знаков: 00010110
- поскольку число положительное, его не нужно менять.
в) выполняем сложение
Возник перенос в девятый разряд, которого у нас нет (т.е. фактически произошло переполнение регистра). При суммировании в дополнительном коде переполнение игнорируется, поэтому результат не меняется.