Пример 4.17

Найти сумму 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 мантисса частного М = М12, а порядок k = k1 - k2. При этом непосредственно операция деления сводится к сдвигу делителя вправо и последовательному вычитанию его из делителя (т.е. сложения с дополнительным кодом вычитаемого). Как и в предыдущих операциях, результат деления при необходимости нормализуется.

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

Время выполнения операций с кодами вещественных чисел в форме с плавающей запятой гораздо больше, нежели с числами целыми или с фиксированной запятой. По этой причине для ускорения обработки на компьютерах IBM с процессорами Intel 80286 и 80386 ставились так называемые «математические сопроцессоры»; в современных компьютерах команды (точнее, микропрограммы, поскольку они содержат последовательность действий) обработки вещественных чисел включены в перечень команд центрального процессора.

Заканчивая рассмотрение порядка обработки чисел в компьютере, хотелось бы сделать ряд общих замечаний:

1. В компьютерах арифметические устройства выполняют действия не с самими двоичными числами по правилам двоичной арифметики, а с их двоичными кодами (представлениями) по правилам арифметики двоичных кодов.

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

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

4. Различие правил обработки целых и нормализованных чисел приводит к необходимости точного описания типов переменных перед их использованием в программах. Вторая причина описания типов состоит в оптимизации расходования памяти компьютера, поскольку числа разных типов требуют для хранения различных ресурсов памяти.

Читайте также:

Пример 9.2.

Нестрогое определение алгоритма

Пример 3.1.

Раздел 2. АЛГОРИТМЫ. МОДЕЛИ. СИСТЕМЫ

Пример 5.1

Вернуться в оглавление: Теоретические основы информатики


double arrow
Сейчас читают про: