ОБЩИЕ СВЕДЕНИЯ
Обработка числовых данных в форме с плавающей запятой считалась до недавнего времени нетипичной для микропроцессорных систем [5]. Однако расширение областей использования микропроцессоров, в частности создание микропроцессорных информационно-измерительных систем и распределенных сетей сбора данных, потребовало существенного увеличения диапазона обрабатываемых чисел при сохранении их ограниченной значности, определяемой точностью датчиков первичной информации [23, 24].
В этих условиях применение арифметики с фиксированной запятой приводит к резкому увеличению разрядности чисел, росту затрат памяти и времени выполнения программ, что снижает в целом производительность и экономичность микропроцессорных систем. Кроме того, с увеличением разрядности чисел с фиксированной запятой и усложнением алгоритмов обработки возрастает неопределенность прогнозирования вычислений и затрудняется их предварительное масштабирование, призванное гарантировать корректность и требуемую точность результатов. Эти проблемы снимает арифметика с плавающей запятой, поскольку она обеспечивает раздельное представление диапазона и точности чисел (мантиссы и порядка) и реализует их автоматическое масштабирование в процессе вычислений [13, 31, 33, 34, 47, 50, 61, 66].В данной главе рассматриваются особенности представления чисел в форме с плавающей запятой, а также алгоритмы и программы сложения, умножения и деления двоичных чисел в дополнительных кодах с плавающей запятой форматов обычной и повышенной точности.
Числа с плавающей запятой имеют следующую общую форму представления [с учетом выражений (1.1) и (1.6)]:
border=0 class="lazyload" data-src="/files/uch_group53/uch_pgroup331/uch_uch1315/image/128.jpg">
запятая фиксирована перед ее старшим цифровым разрядом, но фактическое положение запятой в представлении числа определяется независимо от мантиссы порядком т и изменяется — «плавает» — в зависимости от его величины и знака (см.
§ 1.1).Существует много вариантов представления конкретного числа в форме с плавающей запятой. Например, смешанное число 12,34 можно представить в следующем виде: ІО2 -0,1234; ІО3-0,01234; ІО4 -0,001234 и т. п. На практике один из вариантов представления выбирают в качестве стандартного. Если мантисса удовлетворяет условию
Точность представления чисел с плавающей запятой определяется теми же общими формулами (1.12), что и для чисел с фиксированной запятой. Граничная абсолютная ошибка Дг этих чисел в отличие от чисел с фиксированной запятой непостоянна и зависит не только от разряд-
Рис. 2.1. Формат /?-ичного числа с плавающей запятой
ности мантиссы и метода ее округления, но и от величины
мальное абсолютные значения числа при нормализованной мантиссе. Из неравенства (2.6) следует, что граничная относительная ошибка представления чисел с плавающей запятой не зависит от величины порядка, определяется разрядностью мантиссы и практически одинакова для любых чисел, как малых, так и больших. Заметим, что этот вывод справедлив только для нормализованных чисел. Для ненормализованных чисел граничная относительная ошибка может достигать стопроцентного значения. Сопоставление диапазона и точности чисел подтверждает заключение, что в формате числа с плавающей запятой диапазон и точность чисел отделены друг от друга: разрядность мантиссы определяет точность представления чисел, а разрядность порядка — их диапазон.
Арифметические операции над числами с плавающей запятой выполняют действия как над мантиссами, так и
над порядками, причем те и другие представлены в виде знаковых чисел в соответствии с формулами (2.2) и (2.4). Операции над порядками (сложение, вычитание, сравнение) существенно упрощаются, если вместо их знакового представления (например, в дополнительном коде) использовать беззнаковое представление в виде неотрицательных чисел, или так называемое представление со «смещенным порядком», применяемое в ряде ЭВМ [30, 61, 65]:
На практике существует большое разнообразие представлений чисел с плавающей запятой, определяемое, во-первых, выбором различных систем счисления: двоичной {R = 2) и двоично-смешанных (Q = 8, 10, 16); во-вторых, различными способами кодирования знаковых чисел мантиссы и порядка:, прямым, обратным, дополнительным- или кодом со смещением; в-третьих, различными разрядностью формата и размещением порядка, мантиссы и их знаков относительно друг друга в формате числа [30, 56, 61, 65].
Например, в ЕС ЭВМ для представления короткого формата числа с плавающей запятой отводятся 32 двоичных разряда, из которых 25 используются для представления шестнадцатеричной мантиссы в прямом коде (6 шестнадцатеричных разрядов), а 7 — для поедставления шестнадцатеричной характеристики
Рис. 2.2. Схема соответствия несмещенного т и смещенного тсм порядков
Рис. 2.3. Форматы двоичных чисел с плавающей запятой
со смещенным двоичным порядком (смещение + 64) . В данном пособии используется представление двоичных чисел с плавающей запятой со смещенным порядком и мантиссой в дополнительном коде, причем числа имеют два формата: трехбайтный обычной точности и четырехбайтный повышенной точности.
На рис. 2.3, а изображен трехбайтный формат двоичного числа с плавающей запятой обычной точности. Над рамкой формата проставлены номера двоичных разрядов байта. Число хранится в памяти микропроцессорной системы в виде последовательности трех байтов, размещенных в порядке возрастания адресов памяти. Первый байт числа в старшем разряде содержит знак
Заметим, что неравенства (2.8) и (2.9) получены для нормализованных чисел, округленных несимметричным способом при их представлении в «-разрядном (п = 16) формате мантиссы. В случае симметричного округления (1.9) величина бг уменьшается в два раза. Для обеспечения эквивалентной точности и диапазона в случае чисел с фиксированной запятой потребовалась бы разрядность, в шесть раз большая.
На рис. 2.3, б показан четырехбайтный формат двоичного числа с плавающей запятой повышенной точности. Первый байт содержит значение смещенного порядка
Табл.
2.2. Пограничные числа формата (8, 24)
разом, данный формат существенно расширяет диапазон и точность обрабатываемых чисел. Отметим, что в ряде приложений арифметики с плавающей запятой нет необходимости в использовании формата повышенной точности, поскольку точность исходной информации в микропроцессорных системах зачастую ограничена классом
точности первичных датчиков на уровне 0,1...0,05 %, т. е. превышает неточность представления чисел в формате (8, 16) в соответствии с формулой (2.9). Использование формата повышенной точности связано с дополнительными затратами памяти и времени работы микропроцессора и целесообразно для задач, требующих повышенной точности обработки или большего диапазона представления чисел. Числа с плавающей запятой являются числами ограниченной точности. Поэтому для арифметики с плавающей запятой справедливы все свойства АОТ, рассмотренные в § 1.1. Условимся в дальнейшем изображать нулевое число с плавающей запятой в виде нулевой