Найти сумму X1 = 0,87654∙101, а Х2 = 0,94567∙102, если для записи мантиссы отводится 5 разрядов.
Согласно алгоритму ∆k = 1 и k1 < k2. Следовательно, k = k2 = 2, а мантисса числа X1 должна быть сдвинута на 1 разряд вправо (при этом из-за ограниченности разрядно сетки пропадет цифра 4). Новая мантисса получается суммированием М = 0,94567 + 0,08765 = 1,03332; поскольку она выходит за допустимый интервал представления мантисс, необходимо его нормализовать М' = 0,10333 (при этом теряется цифра 2 в младшем разряде); k' = k + 1 = 3. Окончательно получаем: X = - 0,10333∙103. Точный результат суммирования оказался бы 103,3324.
Следствием существования погрешности сложения (и, в равной мере, вычитания) кодов вещественных чисел оказывается то, что такое суммирование не обладает ассоциативностью, т.е. в общем случае
Вычитание нормализованных чисел, как и чисел целых, не является самостоятельной операцией и сводится к сложению с дополнительным кодом числа.
Умножение нормализованных чисел Х1ÄХ2 производится в соответствии с правилами: если по-прежнему X1 = M1 ∙ рk1 и Х2 = М2 ∙ pk2, то, очевидно, мантисса произведения М = М1 ∙ M2, а порядок k = k1 + k2; при необходимости полученное число нормализуется.
Операция деления, проводимая как над целыми, так и вещественными числами, приводит в общем случае к появлению вещественного числа, поэтому целые числа предварительно преобразуются в вещественный тип, т.е. переводятся в нормализованную форму. Очевидно, при делении Х1ÆХ2 мантисса частного М = М1/М2, а порядок k = k1 - k2. При этом непосредственно операция деления сводится к сдвигу делителя вправо и последовательному вычитанию его из делителя (т.е. сложения с дополнительным кодом вычитаемого). Как и в предыдущих операциях, результат деления при необходимости нормализуется.
В операциях умножения нормализованных чисел в компьютере возможны ситуации, когда не будут в точности выполняться сочетательный и распределительный законы, т.е.
Время выполнения операций с кодами вещественных чисел в форме с плавающей запятой гораздо больше, нежели с числами целыми или с фиксированной запятой. По этой причине для ускорения обработки на компьютерах IBM с процессорами Intel 80286 и 80386 ставились так называемые «математические сопроцессоры»; в современных компьютерах команды (точнее, микропрограммы, поскольку они содержат последовательность действий) обработки вещественных чисел включены в перечень команд центрального процессора.
Заканчивая рассмотрение порядка обработки чисел в компьютере, хотелось бы сделать ряд общих замечаний:
1. В компьютерах арифметические устройства выполняют действия не с самими двоичными числами по правилам двоичной арифметики, а с их двоичными кодами (представлениями) по правилам арифметики двоичных кодов.
2. Причиной отличий правил арифметики двоичных кодов от правил обычной арифметики является ограниченность разрядной сетки, применяемой для записи чисел в компьютере. По этой же причине отличаются понятия «ноль» и «машинный ноль», «бесконечность» - «максимальное число», а также становится возможной ситуация переполнения, что требует ее постоянного отслеживания.
3. Применение при вычислениях формы представления чисел с плавающей запятой обеспечивает единообразие при их записи и обработке, и, что важно, в результате автоматического масштабирования числа на каждом этапе его обработки сокращается погрешность вычислений.
4. Различие правил обработки целых и нормализованных чисел приводит к необходимости точного описания типов переменных перед их использованием в программах. Вторая причина описания типов состоит в оптимизации расходования памяти компьютера, поскольку числа разных типов требуют для хранения различных ресурсов памяти.