Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_ПТЦА_2.doc
Скачиваний:
5
Добавлен:
09.11.2019
Размер:
594.94 Кб
Скачать

2.7.3 Сложение чисел при разных значениях порядков

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

Выравнивание порядков означает, что порядок меньшего числа надо увеличить на величину ΔР=|ра – рв | , это означает сдвиг мантиссы меньшего числа вправо на количество разрядов, равное ΔР. Поэтому, цифровой автомат должен вначале распознать, какой порядок из двух чисел является меньшим. На это укажет знак ΔР . Если ра≥рв - знак положительный и наоборот, если знак отрицательный, то ра < рв. Эту операцию иногда выполняют путем сравнения чисел.

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

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

  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. Где ~РВобр. – инверсный код РВобр. Выполним сложение.

11.01 +00.11 100.00

+|→ 1

00.01

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

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

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

mАобр=00.1011 mВобр=11.0110 Делаем сдвиг mВобр вправо, тогда

mВобр=11.1011

+mАобр=00.1011

mCобр=100.0110

|→ 1

00.0111 Здесь δ=1, γ=0 необходим сдвиг влево, mCобр=00.1110 коррекция порядка на Р = -1.

РАобр=11.01

+Ркобр= 11.10

110.11 Результат получен в обратном коде, |→ 1 Определим прямой код результата РСобр=11.00 РСпр=11.11

Ответ: Спр. = 00.1110.11.11 Спр. = 00.1110*2-3

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]