Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод_Практика_Основи-програм-інженерії_(1+3кур...doc
Скачиваний:
7
Добавлен:
07.05.2019
Размер:
7 Mб
Скачать

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

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

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

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

4.2 Завдання до виконання практичної роботи

!!! Зразки додавання чисел з фіксованою крапкою в оберненому та доповнювальному коді знаходиться у додатку В.

!!! Зразки додавання дробових чисел оберненому та доповнювальному коді знаходиться у додатку Г.

ПРАКТИЧНА РОБОТА №5

Тема: Множення чисел

Мета роботи: навчитись множити числа з фіксованою та плаваючою комою в доповню вальному та оберненому кодах.

5.1 Теоретичні відомості

5.1.1 Множення чисел у прямому коді

Рассмотрим основные способы выполнения операции умножения для различных систем cчисления. Самым распространенным способом умножения чисел является способ поразрядного умножения множимого на множитель, начиная с младшего разряда - 1-й способ, начиная со старшего разряда – 2-способ.

Рассмотрим Приклад:

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

В двоичном счислении эта задача значительно упрощается, т.к. умножать поразрядно нет необходимости. В самом деле, если умножать множимое на "1", то это повторение множимого со сдвигом на один разряд вправо (влево), а на "0" - записываются одни нули со сдвигом.

В обоих случаях операция умножения состоит из ряда последовательных операций сдвига і сложения частных произведений. Таким образом, операция умножения сводится к сложению частных произведений, которые получаются из множимого с соВідповідьствующим сдвигом или нулей, если в разряде множителя "нуль", или множимого, если в разряде множителя 1. Рассмотрим, как производит Множення компьютер.