Алгоритмы типов ДД или ОО
Особенностью этих алгоритмов является то, что в вычислениях используются модифицированные коды. В основном, этапы выполнения алгоритмов типов ДД и ОО практически совпадают. Поэтому подробное рассмотрение будет проводиться только для первого из них.
Вычисляем S = A ± B ; | A | < 1 ; | B | < 1 ; A ≠ 0 ; B ≠ 0
Особенности алгоритма ДД
1) Числа в памяти хранятся в дополнительном коде.
2) Операции сложения и вычитания выполняются в модифицированном дополнительном коде.
3) Преобразование в модифицированный код происходит при пересылке данных из памяти в АЛУ.
4) Знаки чисел участвуют в вычислительных операциях и знак результата образуется автоматически после окончания вычислений.
5) Переполнение разрядной сетки обнаруживается при несовпадении цифр в знаковых разрядах кода суммы.
6) Образовавшаяся сумма записывается в память в дополнительном коде.
Выполним пример вычислений по алгоритму ДД.
S = A – B ; A = - .01101 ; B = .11011;
Коды чисел в ОЗУ [А]д = 1.10011; [B]д = 0.11011
В регистры АЛУ принимаются модифицированные коды чисел:
РГА : = [A]дм = 11.10011 ; РГВ : = [B] дм = 00.11011
( Точка в кодах введена условно, чтобы отделить знаковые разряды).
Так как действие вычитание , то D: = 1. Ищем псевдосумму в виде
S* = [ РГА] пм + [ РГВ]д ; [ РГВ] дм = [РГВ] ом + 2-n
[РГА] пм = 11.10011
|
|
[РГВ] дм = 11.00101
S* = 110.11000
Анализ цифр кода псевдосуммы слева направо показывает следующее. Крайняя левая цифра 1 представляет собой перенос из старшего разряда. Она выходит за пределы разрядной сетки. Два следующих разряда являются знаковыми. Цифры в этих разрядах не совладают. Следовательно, | S| > 1.
Приведем пример вычислений для алгоритма ОО.
S= A + B ; A= .110101 = 53 B = -.001101 = 13
Так как ДЕЙСТВИЕ D: =0, А> 0, В < 0 , то ищем псевдосумму
S* = А + В , следовательно : [A] пм = 00.110101
+ [B] ом = 11.110010
S* = 100.100111
+ 1
[S] пм = 00.101000 = 40
Крайняя слева "1" в численном значении S' является единицей переноса за пределы разрядной сетки и приводит к процессу "циклического переноса" который состоит в прибавлении 1=2-n к псевдосумме.
( Выполним контроль в десятичном коде S = 53 – 13 = 40)
|
|
Сложение и вычитание десятичных чисел
Как указывалось выше, десятичные числа в ЭВМ представляются в двоично-десятичном коде. Для представления каждой десятичной цифры используются четыре двоичных разряда, что позволяет получить шестнадцать различных комбинаций двоичных кодов. Вследствие этого можно построить различные двоично-десятичные коды, которые характеризуются тем, какой вес присваивается каждому из четырех двоичных разрядов.
В табл. 1.2 приведены для примера несколько двоично-десятичных кодов. Каждый код обозначается той последовательностью весов разрядов, которая ему соответствует. Наиболее употребительным является код 8-4-2-1, который совпадает с обычным двоичным кодом.
Таблица 1.2
Номер разряда | 4 | 3 | 2 | 1 |
Двоично-дес.код | ||||
Код 3-3-2-1 | 3 | 3 | 2 | 1 |
Код 4-2-2-1 | 4 | 2 | 2 | 1 |
Код 5-2-2-1 | 5 | 2 | 1 | 1 |
Код 8-4-2-1 | 8 | 4 | 2 | 1 |
Двоично-десятичное сложение в коде 8-4-2-1
В табл. 1.3 представлено соответствие десятичных цифр и их обозначений в двоично-десятичном коде 8-4-2-1.
|
|
Сформулируем правила сложения в коде 8-4-2-1 на основе анализа числовых примеров в пределах одной декады для десятичного и двоично-десятичного кодов.
Таблица 1.3
Десятич. цифра | двоич.-дес. код | |||
0 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 1 |
2 | 0 | 0 | 1 | 0 |
3 | 0 | 0 | 1 | 1 |
4 | 0 | 1 | 0 | 0 |
5 | 0 | 1 | 0 | 1 |
6 | 0 | 1 | 1 | 0 |
7 | 0 | 1 | 1 | 1 |
8 | 1 | 0 | 0 | 0 |
9 | 1 | 0 | 0 | 1 |
1) 3+5=8 0 0 1 1 как видим, результаты совпадают
+0 1 0 1
1 0 0 0
2) 8+9=17 1 0 0 0
+ 1 0 0 1
1 0 0 0 1 результат неправильный
+ 0 1 1 0 выполняем коррекцию
1 0 1 1 1 теперь результат верен
3) 6+8=14 0 1 1 0
+ 1 0 0 0
1 1 1 0 сумма не совпадает
+ 0 1 1 0 коррекция
1 0 1 0 0 результат совпал с десятичным примером.
Анализируя приведенные примеры, можно отметить следующие особенности.
В примере 1) двоичное сложение в пределах десятичной декады дает правильный результат, так как сумма меньше 9 ( меньше 1001 в двоично-дес. коде).
|
|
В примере 2) после двоичного сложения в декаде получается неправильный результат и возникает единица переноса в следующую декаду. Однако этот перенос является двоичным, а не десятичным, т.к. равен 16 единицам младшего разряда декады. Пример 3) также приводит к неправильному результату, так как получившаяся в декаде сумма чисел больше девяти. Для получения правильного результата в обоих примерах необходимо после двоичного сложения выполнить коррекцию. Для этого к полученной сумме добавляется число 6 ( 0110 ).
Сформулируем правила двоично-десятичного сложения:
- выполнить двоичное сложение внутри каждой декады с учетом возникающих между декадами переносов;
- переносы образуются из данной декады в следующих случаях:
если перенос возникает автоматически во время двоичного сложения, или если образовавшаеся сумма больше 9 (1001);
- к содержимому всех декад, из которых возникали переносы, прибавить для коррекции 6 ( 0110).
Выполним для примера по рассмотренным выше правилам сложение многоразрядных десятичных чисел в двоично-десятичном коде.
Выполним S = А + В сначала в десятичном коде
А = 6 5 3 8 0 4
+ В = 1 7 5 9 9 8
S = 8 2 9 8 0 2
Теперь вычислим этот пример в двоично- десятичном коде.
1 1 1 1 дв.-дес. переносы
А = 0 1 1 0 0 1 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0
+В = 0 0 0 1 0 1 1 1 0 1 0 1 1 0 0 1 1 0 0 1 1 0 0 0
1 0 0 0 1 1 0 0 1 0 0 1 0 0 1 0 1 0 1 0 1 1 0 0 двоичная сумма
+ 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 1 1 0 0 1 1 0 коррекция
S = 1 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 дв.-дес. сумма
Как следует из этих числовых примеров результат сложения в двоично-десятичном коде совпадает с суммой, полученной при использовании десятичного кода.
Дата добавления: 2018-05-12; просмотров: 945; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!