- •2.2 Прямой код отрицательных чисел
- •2.2 Обратный код числа
- •2.2.1 Переход от обратного кода к прямому
- •2.3 Дополнительный код числа
- •2.4 Сложение чисел, представленных в форме с фиксированной запятой, на двоичном сумматоре прямого кода
- •2.5 Cложение чисел на двоичном сумматоре дополнительного кода
- •2.6 Сложение чисел на сумматоре обратного кода
- •2.7 Модифицированные бинарные коды
- •2.7.1 Переполнение разрядной сетки
- •2.7.2 Модифицированное сложение чисел в формате с плавающей точкой
- •2.7.3 Сложение чисел при разных значениях порядков
- •Задание
2.4 Сложение чисел, представленных в форме с фиксированной запятой, на двоичном сумматоре прямого кода
Двоичным сумматором прямого кода (ДСПК) называется сумматор, в котором отсутствует цепь поразрядного переноса между старшим цифровым и знаковым разрядами (рисунок 2.1).
Рис. 2.1. Сумматор прямого кода.
На сумматорах прямого кода можно складывать только числа, имеющие одинаковые знаки, а результат сложения < 1 , т.е. такой сумматор не выполняет операцию алгебраического сложения, переполнение старшего n-разряда служит лишь для индикации факта, что оно было, перекладывая дальнейшие заботы на пользователя, а знак определяется по знаку любого операнда, например SqA.
Пример. Сложить А=0,1011; В = 0,0100 .Здесь SqA = 0 ; SqB = 0
0,1011 (11)
+ 0,0100 (4)
0,1111(15) Ответ: С = 0,1111
Сложить A = –0,0101; B = –0,1001. Здесь SqA = 1 ; SqB = 1
1,0101 (5) +1,1001 (9)
1.1110 (14) Ответ: С = 1,1110
При сложении чисел на ДСПК возможны случаи, когда абсолютное значение суммы операндов превышает единицу, т.е. имеет место переполнения разрядной сетки автомата.
Признаком переполнения будет наличие единицы переноса из старшего разряда цифровой части сумматора. По этому сигналу должен происходить автоматический останов счета и корректировка масштабных коэффициентов с таким расчетом, чтобы избежать переполнения.
2.5 Cложение чисел на двоичном сумматоре дополнительного кода
Двоичным сумматором дополнительного кода (ДСДК) называется, сумматор оперирующий числами, представленными в дополнительном коде.
Основной особенностью ДСДК является наличие цепи переноса 1 переполнения из старшего разряда цифровой части в знаковый разряд (рисунок 8.1), и отсутствие обратной связи переноса 1 переполнения из знакового разряда в самый младший разряд числа.
Рис2.2. Двоичный сумматор дополнительного кода.
Справедлива следующая теорема.
Теорема: Если результат суммы дополнительных кодов чисел отрицательный, то результат представлен в дополнительном коде. Если результат суммы дополнительных кодов чисел положительный, то результат представлен в прямом коде.
Рассмотрим следующие случаи:
Случай 1. A>0, B>0, а A + B<1 числа положительные и нет переполнения.
А = 0,1010; В = 0,0100
Адоп. =0,1010 +Вдоп.= 0,0100 Сдоп. = 0,1110 Спр.=0,1110
Случай 2 A<0, B>0, а |A|>B. А = – 0,1011; В = 0,0100
Адоп=1,0101 +Вдоп =0,0100
Сдоп. =1,1001 Спр. = 1,0111
Результат получен отрицательный, это значит, что он представлен в дополнительном коде, и его необходимо перевести в прямой, чтобы получить истинный результат.
Случай 3. A<0, B>0, а |A|<B. А = -0,0100; В = 0,1011.
Адоп =1,1100 +Вдоп = 0,1011 Спря. = 0.0111
Случай 4. A<0, B<0, а |A + B|<1. . А = – 0,0100; В = – 0,1011.
Адоп = 1,1100
+Вдоп = 1,0101
Сдоп = 1,0001 Спря=1.1111 = -15
2.6 Сложение чисел на сумматоре обратного кода
Двоичным сумматором обратного кода (ДСОК) называется сумматор, оперирующий с числами в обратном коде.
Структурная схема ДСОК приведена на рисунке 2.3
Рисунок 2.3.-Структурная схема ДСОК
ДСОК имеет: n-сумматоров (по количеству разрядов мантиссы); сумматор знаковых разрядов; ai, bi – цифровые разряды числа в машинном коде; переносы из старших разрядов мантиссы в знаковый разряд; наконец, обратный перенос из старшего знакового разряда в младший разряд цифровой части числа.
Для сложения чисел в обратных кодах на ДСОК справедлива следующая теорема.
Теорема: Если результат суммы обратных кодов чисел отрицательный, то результат представлен в обратном коде. Если результат суммы дополнительных кодов чисел положительный, то результат представлен в прямом коде.
Рассмотрим следующие случаи.
Случай 1. А>0, В>0, А+В<1 т.е. оба числа положительные. Тогда сложение производится в прямых кодах.
А = 0.0101 +5
В = 0.0111 7
С = 0.1100 12
Случай 2. A<0, B>0, |A|>B,
А = – 0.1011 – 11 В = 0.0111 +7 Сумматор ДСОК.
Аобр=1.0100
Вобр=0.0111
Собр=1.1011 Спр=1.0100 = -4
Случай 3. A<0, B>0, A<B, А = -0.0101 (-5) В = 0,0111 (+7) Сумматор ДОСК
Аобр = 1.1010 Вобр= 0.0111 Собр=10.0001 |→ 1
0.0010 Спр.=0.0010 =2.
Случай 4. А<0, В<О, |А + В|<1, А = -0,0101 (-5) ; В = -0,1000 (-8) Найти сумму используя ДСОК.
Aобр=1.1010 +Bобр=1.0111 11.0001
|→ 1
Cобр=1.0010 Спр= 1.1101 (-13).