Перед выполнением арифметических действий операнды операции помещаются в соответствующие регистры арифметико-логического устройства.
Сложение и вычитание
Перед выполнением сложения и вычитания необходимо выполнение выравнивания порядков:
Мантисса числа с меньшим порядком сдвигается в своем регистре вправо на такое количество разрядов, которое равно разности порядков операндов. После каждого сдвига порядок увеличивается на 1.
После выравнивания порядков чисел одноименные разряды располагаются в соответствующих разрядах обоих регистров, что позволяет выполнить дальнейшее сложение или вычитание мантисс. Если в результате выполнения операций получен не нормализованный результат, то его необходимо нормализовать сдвигом мантиссы результата влево и одновременным уменьшением порядка результата.
Алгоритм выполнения сложения (вычитания) вещественных чисел A и B:
-
Выровнять порядки:
а) найти разность порядков △P=PA−PB;
б) если △P>0, то сдвинуть мантиссу числа B на △P разрядов вправо; если $\triangle P
-
Выполнить сложение (вычитание) мантисс и произвести округление по n+1-му разряду.
-
Присвоить результату порядок большего числа.
-
Нормализовать (если есть необходимость) мантиссу суммы (разности) с одновременным изменением порядка.
Сложить нормализованные числа 0,110112⋅28 и 0,100012⋅210.
-
Выровняем порядки:
а) разность порядков △P=8−10=−2;
б) $\triangle P
Рисунок 1.
В результате получили нормализованное число с порядком большего числа.
Выполнить вычитание нормализованных чисел 0,100012⋅210 и 0,110112⋅28.
-
Выровняем порядки:
а) разность порядков △P=10−8=2;
б) △P>0, поэтому мантиссу второго числа сдвинем вправо на 2 разряда:
Рисунок 2.
В результате получили не нормализованное число, поэтому его мантиссу сдвигаем влево на 1 разряд и уменьшаем порядок на 1: 0,1010012⋅29.
Найти сумму чисел 32,875 и 4,5 в двоичной системе счисления.
Переведем данные числа в двоичный код:
32,87510=0010 0000,1112=0,1000001112⋅2110;Порядок 110 в двоичной системе счисления больше, чем 11, поэтому найдем разность между порядками: 1102−112=112=310. Сдвигаем мантиссу второго числа (с меньшим порядком) вправо на 3 разряда:
0,10012⋅211=0,00010012⋅2110.Т.к. порядки обоих чисел теперь одинаковых, можно выполнить операцию суммирования, добавив ко второму числу необходимое количество нулей справа:
Рисунок 3.
В результате получили нормализованное число, т.е. никаких преобразований не требуется.
Умножение
При умножении двух нормализованных чисел их мантиссы умножаются и порядки складываются.
Алгоритм выполнения умножения нормализованных вещественных чисел A и B:
-
Перемножить мантиссы чисел.
-
Вычислить порядок произведения PC=PA+PB.
-
Нормализовать (если есть необходимость) мантиссу произведения (возможен сдвиг на 1 разряд влево с одновременным уменьшением порядка результата на 1).
Выполнить умножение нормализованных чисел:
(0,111012⋅2101)⋅(0,10012⋅211)=(0,11101⋅0,1001)2⋅2101+11=Выполнить умножение чисел 3,5 и 8,25 в двоичной системе счисления.
Переведем данные числа в двоичный код:
3,510=0000 0011,12=0,1112⋅210.Получили нормализованный результат 0.11100111 ⋅2110.
Деление
При выполнении деления двух нормализованных чисел мантисса делимого делится на мантиссу делителя и из порядка делимого вычитается порядок делителя. Если результат получают не нормализованный, то его необходимо нормализовать.
При делении (если необходимо) меньшую мантиссу добавляют нулями.
Алгоритм выполнения деления нормализованных вещественных чисел A и B:
-
Мантиссу делимого разделить на мантиссу делителя.
-
Вычислить порядок частного PC=PA−PB.
-
Нормализовать мантиссу полученного числа (возможен сдвиг на 1 разряд вправо с одновременным увеличением порядка результата на 1).
Выполнить деление нормализованных чисел:
(0,11112⋅2100):(0,1012⋅211)=(0,1111:0,101)2⋅2100−11=Выполнить деление чисел 28,875 и 3,5 в двоичной системе счисления.
Переведем данные числа в двоичный код:
28,87510=0001 1100,1112=0,111001112⋅2101;При делении меньшую мантиссу добавим нулями:
В результате получили не нормализованное число, поэтому его мантиссу сдвигаем вправо на 1 разряд и увеличиваем порядок на 1: 1,000012⋅211=0,1000012⋅2100.