Сложение двоичных чисел в кодах
При сложении двоичных чисел в кодах знаковые разряды участвуют в операции сложения на ровне с цифровыми, при этом, если выполняется операция сложения в обратных кодах, то единицы переноса из знакового разряда сумматора прибавляется к её младшему разряду (т.е. выполняется циклический перенос). Если же операция сложения выполняется над числами, представленными в дополнительном коде, то единица переноса из знакового разряда суммы отбрасывается. Переход от обратного и дополнительного кодов к прямому выполняется аналогично переходу от прямого к обратному и дополнительному соответственно.
Пример 1.
[x1]обр = 0.010011
[x2]обр = 1.00.1110
Сложить:
0.010011
1.001110
1.100001
Ответ: х1+х2=-0.011110
Пример 2.
[x1]обр=0.110110
[х2]обр=1.110011
Сумма:
0.110110
1.110011
10.101001 (надо 1 из 10 перекинуть в младший разряд)
0.101010
Ответ: 0.101010
[х1]обр = 1.011001
[х2]обр = 1.110011
Сумма:
1.011001
1.110011
11.001100
1.001101
Ответ: -0.110010
[х1]доп = 0.001101
[х2]доп = 1.001011
Сумма:
0.001101
1.001011
1.011000
Ответ: -0.101000
[х1]доп = 0.101101
[х2]доп = 1.101001
Сумма:
0.101101
1.101001
10.010110
1 отбрасывается
Ответ: 0.010110
[х1]доп = 1.100101
[х2]доп = 1.110011
Сумма
1.100101
1.110011
11.011000
Отбрасываем 1
Ответ: -0.101000
При сложении двух чисел с одинаковыми знаками возможно переполнение разрядной сетки. Это приводит к существенному искажению результата.
[х1]обр = 0.110111
[х2]обр = 0.011001
Сумма:
0.110111
0.011001
1.010000
Ответ: ошибочный, переполнение, т.к. имеет место перенос только в знаковый разряд.
[х1]доп = 1.010110
[х2]доп = 1.001001
Сумма:
1.010110
1.001001
Ответ: ошибочный, переполнение, т.к. имеет место перенос только из знакового разряда.
Пример про модифицированные коды:
[х1]мобр=11.010
[х2]мобр=11.100
Сумма:
11.010
11.100
110.110 (перенос)
10.111
Ответ: ошибочный, переполнение, т.к. имеет место несовпадение в знаковом разряде.
Способы обнаружения переполнения:
1) Переполнение отсутствует, если имеет место перенос из знакового разряда и в знаковый либо если они оба отсутствуют.
2) Использование модифицированных кодов: несовпадение знаковых разрядов модифицированного кода (01, 10) является признаком переполнения разрядной сетки.
Х1 = 01110
Х2 = 10101
Найти сумму и разность.
Арифметические операции выполнять в обратном коде.
Х1+х2
[х1]обр = 001110
[х2]обр = 010101
Сумма:
Ответ: ошибочный, переполнение, т.к. имеет место перенос только в знаковый разряд.
Х1 –х2 = х1+ (-х2)
-х2 = -10101
[Х1]обр = 001110
[х2]обр = 101010
Ответ: -00111
Умножение двоичных чисел машинным методом
Умножение двоичных чисел машинным методом производится по следующему алгоритму:
¨ Определяют знак произведения путём сложения по модулю два знаковыз разряда множителей;
¨ Перемножение модулей чисел, начиная с младшего разряда множителя, одним из способов умножения: а) множимое неподвижно, сумматор частичных произведений сдвигается вправо; б) сумматор частичных произведений неподвижен, множимое сдвигается влево.
Оба способа дают одинаковый результат, в обоих случаях умножение начинается с анализа младшего разряда множителя. Умножение производится в прямом коде.
1 способ (множимое неподвижно, сумматор сдвигается вправо). Анализируется очередной разряд множителя: если он равен единице, то к содержимому сумматора прибавляется множимое и сумматор сдвигается вправо; если он равен нулю, то производится только сдвиг сумматора вправо.
При чем, количество сдвигов равно количеству разрядов множителя, а количество прибавлений множимого к сумматору равно количеству единиц во множителе.
Пример:
[х1]пр = 01101
[х2]пр = 11001
1) Определяем знак произведения: 0+1=1
2) Находим произведение модулей чисел первым способом: множимое – 1101. Множитель – 1001
1101 (множимое)
01101000 (сдвиг)
00110100 (сдвиг)
01110101 (сдвиг)
2 способ(сумматор неповижен, множимое сдвигается влево). Анализируется очередной разряд множителя, если он равен единице, то множимое прибавляется к сумматору и множимое сдвигается влево на один разряд; если он равен нулю, то производится только сдвиг множимого влево.
3) Находим произведение вторым способом:
1101 (множимое)
_____________
Ответ: -01110101
ДЗ: 5*(-17)
5 – 00101
17—10001
Раздел 4. Логические основы ЭВМ