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

    Дисциплина: Разное
    Тип работы: Курсовая
    Тема: Сложения и вычитания чисел с плавающей запятой

    Сложения и вычитания чисел с плавающей запятой
    1. Производится выравнивание порядков чисел. Порядок меньшею (по модулю) числа принимается равным порядку большего числа, а мантисса меньшего числа сдви­гается вправо на число
    S-ичных разрядов, равное разности порядков чисел.
    2. Производится сложение (вычитание) мантисс, в ре­зультате чего получается мантисса суммы (разности).
    3. Порядок результата принимается равным порядку большего числа.
    4. Полученная сумма (разность) нормализуется.
    Примем, что числа с плавающей запятой имеют основание порядка S = 16.
    Первое слагаемое (уменьшаемое) поступает на входной регистр Рг1, второе слагаемое (вычитаемое) — на входной регистр Рг3. Знаки слагаемых хранится в триггерах зна­ков Тг3н1 и
    Тг3н2. Смещенные порядки слагаемых пере­сылаются в регистры РгС и РгD. Схема СОЛО применяется для сравнения и выравнивания порядков слагаемых. Сум­матор См, его входные регистры РгА и
    РгВ и выходной ре­гистр РгСм используются при сложении (вычитании) ман­тисс, а также при передаче мантисс в процедурах выравни­вания порядков и нормализации результата.
    Операция сложения (вычитания) может быть подразде­лена на следующие этапы: 1) прием операндов, 2) выравни­вание порядков, 3) сложение мантисс и 4) нормализация
    результата.
    Прием операндов описывается следующей микропрограммой:
    РгЗ: = ШИВх, РгВ: = 0, Тг3н1: = Рг3[0]
    Рг1: = ШИВых, РгА: = 0, Тг3н2: = если сложение то Рг1[0] иначе
    прием
    , установка в 0 вход­ного регистра для Y, фиксация знака Y в ТгЗн2 при сложении либо противоположного знака при вычита­нии
    Выравнивание порядков начинается с их сравнения. Ман­тисса числа с меньшим порядком при выравнивании сдви­гается вправо на число разрядов, равное разности порядков. Поскольку
    рассматриваемые числа с плавающей запятой имеют
    = 16, сдвиг осуществляется шестнадцатеричными разрядами, т. е. каждый сдвиг производится на четыре двоичных разряда.
    При сравнении порядков возможны пять случаев:
    — число разрядов мантиссы). В ка­честве результата суммирования сразу же может быть взято первое слагаемое, так как при выравнивании порядков все разряды мантиссы второго
    слагаемого принимают нулевое значение;
    двиг на
    разрядов вправо мантиссы первого слагаемого.
    За порядок результата при выполнении суммирования принимается больший из порядков операндов.
    Выравнивание порядков осуществляется следующим образом. Смещенный порядок числа Х из РгЗ передается в регистр РгD, РгСОЛО и в счетчик, соединенный с выхо­дом РгСОЛО. Затем в РгС
    передается смещенный поря­док числа
    РгС:
    = О,
    [0]:
    = 0,
    7] := Рг3 [1
    РгСОЛО: = РгС
    Сч1: = РгСОЛО;
    РгС [О]: = 0,
    РгС [1
    7] =
    г [1
    После этого начинается сравнение порядков чисел Х и
    на СОЛО и сдвиг мантиссы числа с меньшим порядком вправо,
    Для того чтобы учесть случаи 1 и 2, возникающие при сравнении порядков, и не делать лишних сдвигов ман­тиссы, превратившейся в процессе выравнивания порядков в 0, на счетчике
    циклов СчЦ фиксируется предельное число сдвигов, равное количеству шестнадцатеричных цифр ман­тиссы:
    СчЦ: = 6;
    При выполнении сдвига на один шестнадцатеричный разряд содержимое СчЦ уменьшается на 1. При СчЦ = 0 сдвиги прекращаются и в качестве результата берется большее слагаемое.
    Микропрограмма выравнивания порядков:
    МК:
    если
    РгС
    MK1:
    PгB [8
    31]: = PгЗ [8
    31];
    РгСм: = П(4) См, РгСм [0
    3]: = 0, Сч1 := Сч1+1
    Рг3[8
    31]:=РгСм[8
    31]; РгD:=Сч1, СчЦ: =
    СчЦ
    если
    СчЦ
    0 то МК;
    РгВ: = 0, РгА: = Рг1, РгСм := См;
    ШИВых: = РгСм;
    конец
    выдача
    в качестве результата—случай 2 при сравнении порядков
    МК2:
    РгА[8
    31] :=Рг1 [8
    31];
    РгСм: = П (4) См, РгСм [0
    3] : = 0, Сч1 := Сч1-1
    сдвиг вправо мантиссы Y и уменьшение большего порядка X, первоначально занесенного в Сч1, на 1. Уменьшение производится до тех пор, пока порядок Х не сравняется с
    порядком Y, после чего в качестве порядка результата принимается сохраненный в Рг3 исходный порядок Х
    Рг1 [1
    31]: = РгСм [8
    31], Рг
    : = Сч1, СчЦ: = СчЦ - 1,
    если
    СчЦ
    0, то МК4 иначе РгА: =0, РгВ: =Рг3, РгСм: =См, ШИВых: = РгСм,
    конец
    МК4:
    если
    РгС
    то
    МК2;
    [0]: = 0, РгD[1
    7]: = Рг3[1
    7], РгС = 0;
    РгСОЛО : = РгС
    Сч1: = РгСОЛО
    МКЗ:
    РгСм: = 0,
    7] : = РгСм, РгЗ [0
    7] : = РгСм
    После выравнивания порядков модули мантисс хра­нятся в
    и РгЗ в разрядах с 8-го по 31-й, их знаки в Тг3н2 и Тг3н1, а порядок результата
    в Сч1.
    Сложение мантисс. Анализируются знаки мантисс и при равенстве знаков модули мантисс складываются. Если оказывается, что См [7] = 1, то возникло переполнение при сложении мантисс.
    В случае переполнения мантисса суммы сдвигается на четыре двоичных разряда (один шестнадцатеричный разряд) вправо, а порядок увеличивается на 1 (Сч1: = Сч1 + 1). Если после этого Сч1
    [0] = 1, то формируется признак прерывания из-за переполнения по­рядка. Если переполнения нет, то в РгСм формируется ре­зультат операции, для чего содержимое Сч1 [1
    7] за­носится в РгСм [1
    7], в РгСм [0] передается знак, а в РгСм [8
    31]— мантисса суммы.
    При различных знаках мантисс отрицательная мантисса передается на входной регистр сумматора в обратном коде и производится суммирование ее с прямым кодом положи­тельной мантиссы и
    1, прибавляемой к младшему разряду сумматора. Знак результата фиксируется в триггере знака. От полученного результата, если он отрицателен, берется его модуль. Если результат
    нормализован (См [8
    0), то на РгСм заносятся знак результата (по значению триггера знака), порядок по значению Сч1 и модуль мантиссы.
    Если результат не нормализован и нет исчезновения значимости (мантисса не равна 0), производится нормали­зация. Мантисса результата сдвигается влево и одновре­менно уменьшается
    порядок результата (Сч1: = Сч1 - 1). При отрицательном переполнении порядка (Сч1 [0] = 1) формируется признак исчезновения порядка. Если нормализация завершается без исчезновения
    порядка, фор­мируется результат операции из кода знака, порядка и мантиссы.
    Микропрограмма процедуры сложения мантисс:
    если
    ТгЗн
    Тг3н2 то МЗ;
    РгА: = Рг1, РгВ: = РгЗ;
    РгСм: = См;
    если
    См[7] = 1 то М2;
    М1:
    РгСм [ 1
    7]: = Сч1 [1
    РгСм [0] :== если Тг3н1=0 то 0 иначе 1;
    ШИВых: = РгСм;
    конец
    М2:
    Сч1:=Сч1+1, РгСм := П(4)См, РгСм[0
    3]:=0;
    если
    Сч1[0]=0 то М1 иначе прерывание из-за переполнения порядка;
    МЗ:
    если
    Тг3н1=0 то РгА :=
    иначе
    РгА : = Рг1, РгВ: =
    РгСм :=РгА+РгВ +1;
    если
    См[0]=0 то M4;
    Рг3:= РгСм;
    РгА :=0, РгВ: =
    РгСм:= РгА +РгВ +1;
    М4:
    ТгЗн1 := РгЗ [0];
    М5:
    если
    См [8
    0 то
    если
    См
    0 то М6;
    РгСм: = 0, прерывание из-за потери значимости;
    Сч1:=Сч-1, РгСм := Л(4)См, РгСм[28
    31]: = 0;
    РгЗ: = РгСм;
    РгВ : = РгЗ, РгА: = 0;
    РгСм: = См;
    если
    Сч1[0]=0 то М5;
    РгСм: = 0, прерывание из-за исчезновения порядка;
    Сложение и вычитание выполняются приближенно, так как при выравнивании по­рядков происходит потеря младших разрядов одного из слагаемых. В этом случае погрешность всегда
    отрицательна и может доходить до единицы младшего разряда. Чтобы уменьшить погрешность, применяют округление резуль­тата. Для этого может быть использован дополнительный разряд
    сумматора, в который после выполнения суммиро­вания добавляется 1.
    Язык: Русский
    Скачиваний: 354
    Формат: Microsoft Visio, Microsoft Word
    Размер файла: 214 Кб
    Автор:
    Скачать работу...

    Забрать файл

    Похожие материалы:


ПИШЕМ УНИКАЛЬНЫЕ РАБОТЫ
Заказывайте напрямую у исполнителя!


© 2006-2016 Все права защищены