Сложение двоичных чисел в кодах

При сложении двоичных чисел в кодах знаковые разряды участвуют в операции сложения на ровне с цифровыми, при этом, если выполняется операция сложения в обратных кодах, то единицы переноса из знакового разряда сумматора прибавляется к её младшему разряду (т.е. выполняется циклический перенос). Если же операция сложения выполняется над числами, представленными в дополнительном коде, то единица переноса из знакового разряда суммы отбрасывается. Переход от обратного и дополнительного кодов к прямому выполняется аналогично переходу от прямого к обратному и дополнительному соответственно.

Пример 1.

[x1]обр = 0.010011

[x2]обр = 1.00.1110

Сложить:

0.010011

1.001110

1.100001

Ответ: х12=-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

Найти сумму и разность.

Арифметические операции выполнять в обратном коде.

Х12

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. Логические основы ЭВМ