Сложения и вычитания чисел с плавающей запятой

Сложения и вычитания чисел с плавающей запятой 1. Производится выравнивание порядков чисел. Порядок меньшею по модулю числа принимается равным порядку большего числа, а мантисса меньшего числа сдвигается вправо на число S-ичных разрядов, равное разности порядков чисел. 2. Производится сложение вычитание мантисс, в результате чего получается мантисса суммы разности. 3. Порядок результата принимается равным порядку большего числа. 4. Полученная сумма разность нормализуется. Примем, что числа с плавающей запятой имеют основание порядка S 16. Первое слагаемое уменьшаемое поступает на входной регистр Рг1, второе слагаемое вычитаемое на входной регистр Рг3. Знаки слагаемых хранится в триггерах знаков Тг3н1 и Тг3н2. Смещенные порядки слагаемых пересылаются в регистры РгС и РгD. Схема СОЛО применяется для сравнения и выравнивания порядков слагаемых.

Сумматор См, его входные регистры РгА и РгВ и выходной регистр РгСм используются при сложении вычитании мантисс, а также при передаче мантисс в процедурах выравнивания порядков и нормализации результата.

Операция сложения вычитания может быть подразделена на следующие этапы 1 прием операндов, 2 выравнивание порядков, 3 сложение мантисс и 4 нормализация результата.Прием операндов описывается следующей микропрограммой РгЗ ШИВх, РгВ 0, Тг3н1 Рг30 прием X, установка в 0 входного регистра сумматора для Х и фиксация знака Х в Тг3н1 Рг1 ШИВых, РгА 0, Тг3н2 если сложение то Рг10 иначе прием Y, установка в 0 входного регистра для Y, фиксация знака Y в ТгЗн2 при сложении либо противоположного знака при вычитании Выравнивание порядков начинается с их сравнения.

Мантисса числа с меньшим порядком при выравнивании сдвигается вправо на число разрядов, равное разности порядков.Поскольку рассматриваемые числа с плавающей запятой имеют S 16, сдвиг осуществляется шестнадцатеричными разрядами, т. е. каждый сдвиг производится на четыре двоичных разряда.

При сравнении порядков возможны пять случаев 1 m число разрядов мантиссы.В качестве результата суммирования сразу же может быть взято первое слагаемое, так как при выравнивании порядков все разряды мантиссы второго слагаемого принимают нулевое значение 2 . В качестве результата суммирования может быть взято второе слагаемое 3 . Можно приступить к суммированию мантисс 4 Мантисса второго слагаемого сдвигается на разрядов вправо, затем производится суммирование мантисс 5 Перед выполнением суммирования мантисс производится cдвиг на разрядов вправо мантиссы первого слагаемого.

За порядок результата при выполнении суммирования принимается больший из порядков операндов. Выравнивание порядков осуществляется следующим образом.Смещенный порядок числа Х из РгЗ передается в регистр РгD, РгСОЛО и в счетчик, соединенный с выходом РгСОЛО. Затем в РгС передается смещенный порядок числа Y РгС О, PD 0 0, PгD 1 7 Рг7 РгСОЛО РгС PгD Сч1 РгСОЛО РгС О 0, РгС 1 7 Pг 7 После этого начинается сравнение порядков чисел Х и Y на СОЛО и сдвиг мантиссы числа с меньшим порядком вправо, Для того чтобы учесть случаи 1 и 2, возникающие при сравнении порядков, и не делать лишних сдвигов мантиссы, превратившейся в процессе выравнивания порядков в 0, на счетчике циклов СчЦ фиксируется предельное число сдвигов, равное количеству шестнадцатеричных цифр мантиссы СчЦ 6 При выполнении сдвига на один шестнадцатеричный разряд содержимое СчЦ уменьшается на 1. При СчЦ 0 сдвиги прекращаются и в качестве результата берется большее слагаемое.

Микропрограмма выравнивания порядков МКесли РгС РгD то МК1 иначе если РгС РгD то МКЗ иначе МК2MK1PгB 8 31 PгЗ 31 РгСм П4 См, РгСм 0 3 0, Сч1 Сч11 сдвиг вправо мантиссы Х и увеличения порядка X, первоначально занесенного в РгСч1, на 1 Рг38 31РгСм31 РгDСч1, СчЦ СчЦ - 1 фиксация сдвинутой мантиссы Х и увеличенного порядка X, уменьшение на 1 числа цифр мантиссы X, не вышедших за разрядную сетку если СчЦ 0 то МК РгВ 0, РгА Рг1, РгСм См ШИВых РгСм конец выдача Y в качестве результата случай 2 при сравнении порядков МК2РгА8 31 Рг31 РгСм П 4 См, РгСм 0 3 0, Сч1 Сч1-1 сдвиг вправо мантиссы Y и уменьшение большего порядка X, первоначально занесенного в Сч1, на 1. Уменьшение производится до тех пор, пока порядок Х не сравняется с порядком Y, после чего в качестве порядка результата принимается сохраненный в Рг3 исходный порядок Х Рг31 РгСм 8 31, РгD Сч1, СчЦ СчЦ - 1, если СчЦ 0, то МК4 иначе РгА 0, РгВ Рг3, РгСм См, ШИВых РгСм, конец выдача Х в качестве результата случай 1 при сравнении порядков МК4если РгС PгD то МК2 PгD0 0, РгD1 7 Рг31 7, РгС 0 РгСОЛО РгС PгD Сч1 РгСОЛО фиксация порядка Х после завершения выравнивания в качестве порядка результата МКЗРгСм 0, Pгl 7 РгСм, РгЗ 7 РгСм обнуление поля порядка слагаемых После выравнивания порядков модули мантисс хранятся в Pгl и РгЗ в разрядах с 8-го по 31-й, их знаки в Тг3н2 и Тг3н1, а порядок результата в Сч1. Сложение мантисс. Анализируются знаки мантисс и при равенстве знаков модули мантисс складываются.

Если оказывается, что См 7 1, то возникло переполнение при сложении мантисс.

В случае переполнения мантисса суммы сдвигается на четыре двоичных разряда один шестнадцатеричный разряд вправо, а порядок увеличивается на 1 Сч1 Сч1. Если после этого Сч1 0 1, то формируется признак прерывания из-за переполнения порядка. Если переполнения нет, то в РгСм формируется результат операции, для чего содержимое Сч1 1 7 заносится в РгСм 1 7, в РгСм 0 передается знак, а в РгСм 8 31 мантисса суммы.

При различных знаках мантисс отрицательная мантисса передается на входной регистр сумматора в обратном коде и производится суммирование ее с прямым кодом положительной мантиссы и 1, прибавляемой к младшему разряду сумматора.

Знак результата фиксируется в триггере знака. От полученного результата, если он отрицателен, берется его модуль.

Если результат нормализован См 8 11 0, то на РгСм заносятся знак результата по значению триггера знака, порядок по значению Сч1 и модуль мантиссы.

Если результат не нормализован и нет исчезновения значимости мантисса не равна 0, производится нормализация.Мантисса результата сдвигается влево и одновременно уменьшается порядок результата Сч1 Сч1 - 1. При отрицательном переполнении порядка Сч1 0 1 формируется признак исчезновения порядка.

Если нормализация завершается без исчезновения порядка, формируется результат операции из кода знака, порядка и мантиссы.Микропрограмма процедуры сложения мантисс если ТгЗн Тг3н2 то МЗ РгА Рг1, РгВ РгЗ РгСм См если См7 1 то М2М1РгСм 1 7 Сч1 1 7 РгСм 0 если Тг3н10 то 0 иначе 1МШИВых РгСм конецМ2Сч1Сч11, РгСм П4См, РгСм0 30 если Сч100 то М1 иначе прерывание из-за переполнения порядкаМЗесли Тг3н10 то РгА , РгВ РгЗ иначе РгА Рг1, РгВ РгСм РгАРгВ 1 если См00 то M4 Рг3 РгСм РгА 0, РгВ РгСм РгА РгВ 1М4ТгЗн1 РгЗ 0М5если См 8 11 0 то M1 если См 0 то М6 РгСм 0, прерывание из-за потери значимостиM6Сч1Сч-1, РгСм Л4См, РгСм2831 0 РгЗ РгСм РгВ РгЗ, РгА 0 РгСм См если Сч100 то М5 РгСм 0, прерывание из-за исчезновения порядка Сложение и вычитание выполняются приближенно, так как при выравнивании порядков происходит потеря младших разрядов одного из слагаемых.

В этом случае погрешность всегда отрицательна и может доходить до единицы младшего разряда.

Чтобы уменьшить погрешность, применяют округление результата. Для этого может быть использован дополнительный разряд сумматора, в который после выполнения суммирован ия добавляется 1. Анализ программы на примерах Y1 0 1001101 110100101110011011100011 0 4D D2E6E3 X1 1 1001011 110001100101110110100111 1 4B C65DA7 Выравнивание порядков МК РгС РгD 01001101 01001011 переход на МК1 MК1 сдвигаем мантиссу Х1 вправо на 4 разр. получаем 000011000110010111011010 и увел. порядок Х1 на 1 получаем 01001100 переход на МК МК РгС РгD 01001101 01001100 переход на МК1 МК1 сдвигаем мантиссу Х1 вправо на 4 разр. получаем 01100011001011101 и увел. порядок Х1 на 1 получаем 1001101 переход на МК МК РгСРгD 0100110101001101 Порядки выравненны.

Сложение мантисс ТгЗн1 ТгЗн2 переход на М3 М3 ТгЗн1 0 РгВ 00110010 10011100110100010 РгСмРгА РгВ 1 01011011 11010010001010000110 См0 0 переход на М1 М1 РгСм 1 7 Сч1 1 7 1001101 РгСм 0 если Тг3н10 то 0 ШИВых РгСм 0 1001101 11010010001010000110 0 4D D22086 КОНЕЦ. Y2 0 1001100 110100101110011011100011 0 4С D2E6E3 X2 0 1001101 110001100101110110100111 0 4D C65DA7 Выравнивание порядков РгD РгС переход на МК2 МК2 сдвигаем мантиссу Y2 вправо на 4 разр. получаем 000011010010111001101110 уменьшаем порядок Х2 на 1 получаем 1001100 РгD РгС Порядки выравненны.

Сложение мантисс ТгЗн1 ТгЗн2 См РгА ргВ 0 11010011100011010101 переход на М1 М1 РгСм 1 7 Сч1 1 7 1001110 РгСм 0 если Тг3н10 то 0 ШИВых РгСм 0 1001101 11010011100011010101 0 4D D38C15 КОНЕЦ. 8-ми разрядный счтчик на триггерах типа D серии К155 К155ТМ5 4 D-триггера.