1.5.2. Алгоритмы типов ПД или ПО
1. 5. 2. Алгоритмы типов ПД или ПО Настоящий алгоритм в основных чертах подобен рассмотренному выше алгоритму типа ПП. Основное отличие состоит в том, что операция вычитание заменяется сложением в дополнительном или обратном кодах (см. п. 1. 3). Отметим главные особенности этого алгоритма: 1) Числа в памяти хранятся в прямых кодах. 2) Вычисления выполняются над модулями чисел. 3) Действия над модулями определяются в соответствии с табл. 1. 1. 4)Если DM: =0, то ê Sê = ê Аê +ê Вê, далее проверяется наличие переполнения разрядной сетки сумматора, в противном случае ЗНS=ЗНА и переход к п. 9), иначе 5) DM=1 и выполняется сложение модулей в дополнительном (обратном) кодах, вычисляется псевдосумма S* = ï Aï + [-ç Bç ]д. 6) Анализируется значение переноса P0 из старшего разряда сумматора. Если P0=1, то результат положителен, S* =ï Sï и ЗНS=ЗНА, переход к п. 9), иначе 7) P0=0 и, значит, результат суммирования отрицателен, т. е. модуль суммы получился в дополнительном (или обратном) коде S*=[- ê S ê ]д, ЗНS=ЗНВ. 8) Следует преобразовать дополнительный (или обратный) код модуля суммы в прямой код. 9) Запись [S]п в память. Выполним в соответствии с алгоритмом ПД пример алгебраического вычитания для двоичных чисел в форме с фиксированной запятой. - Имеется два числа А≠ 0 В≠ 0 ê А ê < 1 ï Вï < 1 Вычислить S=A-B; A= -. 011011, В = -. 110011; 1) Числа из памяти принимаются в АЛУ в прямом коде [A]п = 1. 011011 [B]п = 1. 110011 2) Определим действия над модулями DМ, пользуясь формулой (3. 1). Так как D: =1 ЗНA: =1 ЗНB: =1, то DM: =1. 3) Вычитание модулей заменяем сложением в дополнительном коде. Находим [-ê Bê ]д = [-ê Bê ]о =. 0 0 1 1 0 0
+ . 0 0 0 0 0 1 . 0 0 1 1 0 1 Далее вычисляем псевдосумму S* = ê Aê п + [-ê Bê ]д S* =. 0 1 1 0 1 1 + . 0 0 1 1 0 1 . 1 0 1 0 0 0 4) Как видим, P0 = 0, следовательно, S* < 0 и S*= [- ê Sê ]д 5) Найдем прямой код модуля суммы по формуле ê S ê п = [ S* ] д = [S*]о =. 0 1 0 1 1 1 +. 0 0 0 0 0 1 ê S ê п =. 0 1 1 0 0 0 6) Далее определим логическим путем по формуле (3. 2) знак результата. Так как P0 = 0, то ê А ê < ê В ê, , DM: = 1, ЗНА = 1. Следовательно ЗНS: = 0 Сумма в прямом коде [S] п = 0. 011000; S =. 011000 Алгоритм алгебраического сложения и вычитания типа ПО в значительной степени совпадает с рассмотренным в этом разделе алгоритмом ПД. Имеют место отличия в п 5, где при DM: = 1 вычитание выполняется не в дополнительном, а в обратном коде, а также в п. 8 при переходе к представлению отрицательного результата из обратного кода в прямой код. Оценим кратко основные характеристики алгоритма ПД. К достоинствам можно отнести хранение чисел в памяти в прямых кодах, благодаря чему отсутствует преобразование кодов при вводе и выводе чисел из ЭВМ. Кроме того, выполнение операции вычитание в дополнительном коде позволяет в АЛУ обойтись одним сумматором, что уменьшает оборудование по сравнению с алгоритмом ПП. Недостатком является необходимость преобразования отрицательного результата из дополнительного кода в прямой перед записью в память, что снижает быстродействие. 1. 5. 3. Алгоритмы типов ДД или ОО Особенностью этих алгоритмов является то, что в вычислениях используются модифицированные коды. В основном, этапы выполнения алгоритмов типов ДД и ОО практически совпадают. Поэтому подробное рассмотрение будет проводиться только для первого из них.
Вычисляем 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. 6. Сложение и вычитание десятичных чисел Как указывалось выше, десятичные числа в ЭВМ представляются в двоично-десятичном коде. Для представления каждой десятичной цифры используются четыре двоичных разряда, что позволяет получить шестнадцать различных комбинаций двоичных кодов. Вследствие этого можно построить различные двоично-десятичные коды, которые характеризуются тем, какой вес присваивается каждому из четырех двоичных разрядов. В табл. 1. 2 приведены для примера несколько двоично-десятичных кодов. Каждый код обозначается той последовательностью весов разрядов, которая ему соответствует. Наиболее употребительным является код 8-4-2-1, который совпадает с обычным двоичным кодом. Таблица 1. 2
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|