Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПТЦА-1-2004(Комп.логика).doc
Скачиваний:
271
Добавлен:
07.02.2016
Размер:
7.96 Mб
Скачать

10.1 Алгоритм операции сложения в формате с плавающей точкой

Итак, операция сложения (вычитания) выполняется в следующей последовательности.

  1. Перевести операнды в двоичные дополнительные (или обратные) модифицированные коды, проверив перед этим нормализацию исходных чисел.

  2. Определить разность порядков ΔР = ра - рв

  3. Если ΔР > 0, сдвинуть мантиссу числа В на ΔР разрядов вправо; если ΔР < 0, сдвинуть мантиссу числа А на ΔР разрядов вправо; если ΔР = 0, мантиссы не сдвигаются, (разряды выходящие за приделы разрядной сетки мантиссы теряются).

  4. Выполнить операцию алгебраического сложения (вычитания) над мантиссами. Алгебраическое сложение выполняется по следующему правилу. Анализируется знак числа:

-если знак положительный (00), то в сумматор мантиссы число поступает в прямом коде;

-если знак отрицательный (11), то в сумматор мантиссы число поступает в обратном (дополнительном) коде;

Сложение производится поразрядно, по правилам бинарной арифметики, с переносом единицы переполнения в старший разряд. Знаковые разряды также участвуют в сложении. Единица переполнения в старшем знаковом разряде, для сумматоров дополнительного кода пропадает, для сумматоров обратного кода по обратной связи добавляется к младшему разряду мантиссы.

Для представления результата в прямом коде, после сложения, анализируется знак результата:

-если знак 01(или 10), то знак вначале восстанавливается путем сдвига мантиссы вправо на один разряд с одновременным увеличением порядка на +1;

-если знак 00, то число результата положительное и уже представлено в прямом коде;

-если знак 11, то число результата отрицательное и представлено в обратном (дополнительном) коде. В этом случае, требуется преобразование числа из обратного (дополнительного) в прямой код, путем инвертирования числа (кроме знака) для обратных сумматоров и инвертирования числа (кроме знака) с добавлением +1 к младшему разряду мантиссы для дополнительных кодов.

Результату устанавливается порядок большего числа.

5. Проводится проверка числа на нормализацию (для нормализованных чисел, после знака мантиссы должна стоять единица). Если после знака мантиссы стоит нуль (0), то число сдвигается влево на один разряд (с одновременным уменьшением порядка на –1). Проверяется нормализация. Цикл может повторяться до достижения нормализации.

По данному алгоритму выполняют операции сложения и вычитания цифровые автоматы АЛУ.

Пример. Сложить А = 0,1011 * 2-2 и В = -0,1001 * 2-3 Числа заданны в естественном виде. В АЛУ используется два сумматора обратного кода: - сумматор мантисс (шесть разрядов, включая знак); сумматоры порядков (вместе со знаком - четыре разряда).

РЕШЕНИЕ.

1.Учитывая, что числа заданны уже в нормализованном виде (после запятой стоит 1) представим их в машинном виде в формате с плавающей точкой.

Ампр. = 00.1011.11.10 ; Вмпр.= 11.1001.11.11.

2.Переводим мантиссы чисел в обратные коды.

m(Аобр.) = 00.1011; m(Вобр.) = 11.0110.

3.Для выравнивания порядков чисел, необходимо выяснить, какое из заданных чисел подлежит денормализации. Для этого, определяется автоматом разность порядков чисел.

Р = РА – РВ. Переведем порядки чисел в обратные коды.

РАобр. = 11.01 ; РВобр. = 11.00. Тогда, Р = РАобр - РВобр.=11.01 – 11.00

Заменим операцию вычитания, на операцию сложения.

Р = РАобрВобр. = РАобр +РВобр =11.01 + 00.11. Где РВобр. –

инверсный код РВобр. Выполним сложение.

Величина Р положительная, поэтому РА  РВ. Следовательно, надо сдвигать мантиссу числа В вправо на Р разрядов, т. е. на один разряд, увеличив одновременно порядок на +1.

4.Сдвинем мантиссу числа В вправо на один разряд и сложим их значения на сумматоре обратного кода.

5. Проверим условие нормализации мантиссы результата справа, слева.