- •8. Типы и форматы операндов
- •Числовая информация
- •Числа в форме с фиксированной запятой
- •Упакованные целые числа
- •Десятичные числа
- •Числа в форме с плавающей запятой
- •Стандарт ieee 754
- •Упакованные числа с плавающей запятой
- •Разрядность основных форматов числовых данных
- •Размещение числовых данных в памяти
- •Символьная информация
- •Логические данные
- •Прочие виды информации
- •Видеоинформация
- •Аудиоинформация
Числа в форме с плавающей запятой
От недостатков ФЗ в значительной степени свободна форма представления чисел с плавающей запятой (ПЗ), известная также под названиями нормальной или полулогарифмической формы. В данном варианте каждое число разбивается на две группы цифр. Первая группа цифр называется мантиссой, вторая — порядком. Число представляется в виде произведения X = ±mq±p, где т — мантисса числа X, р — порядок числа, q — основание системы счисления.
Для представления числа в форме с ПЗ требуется задать знаки мантиссы и порядка, их модули в q-ичном коде, а также основание системы счисления (рис. 8.7). Нормальная форма неоднозначна, так как взаимное изменение тир приводит к «плаванию» запятой, чем и обусловлено название этой формы.
![]()
Рис. 8.7. Форма представления чисел с плавающей запятой.
Диапазон и точность представления чисел с ПТ зависят от числа разрядов, отводимых под порядок и мантиссу. Помимо разрядности порядка и мантиссы диапазон представления чисел зависит и от основания используемой системы счисления, которое может быть отличным от 2. Например, в универсальных ВМ (мэйнфреймах) фирмы IBM используется база 16. Это позволяет при одинаковом количестве битов, отведенных под порядок, представлять числа в большем диапазоне. Так, если поле порядка равно 7 битам, максимальное значение qp , на которое умножается мантисса, равно 2128 (при (q = 2) или 16128 (при q = 16), а диапазоны представления чисел соответственно составят 10-19 < |Х| < 10+19 и 10-76 < |Х| < 10+76. Известны также случаи использования базы 8, например, в ВМ В-5500 фирмы Burroughs.
В большинстве вычислительных машин для упрощения операций над порядками последние приводят к целым положительным числам, применяя так называемый смещенный порядок. Для этого к истинному порядку добавляется целое положительное число — смещение (рис. 8.8). Например, в системе со смещением 128 порядок -3 представляется как 125 (-3 + 128). Обычно смещение выбирается равным половине представимого диапазона порядков. Отметим, что смещенный порядок занимает все биты поля порядка, в том числе и тот, который ранее использовался для записи знака порядка.
![]()
Рис.8.8.Форма числа с ПЗ со смещенным порядком
Мантисса в числах с ПЗ обычно представляется в нормализованной форме. Это означает, что на мантиссу налагаются такие условия, чтобы она по модулю была меньше единицы (|q| < 1), а первая цифра после точки отличалась от нуля. Полученная таким образом мантисса называется нормализованной. Для применяемых в ВМ систем счисления можно записать:
двоичная: X = q2p, (1 > |q| = S);
восьмеричная: X = q8p, (1 > |q| = ?);
шестнадцатеричная: X = q16p, (1 > |q| =1/16).
Если первые i цифр мантиссы равны нулю, для нормализации ее нужно сдвинуть относительно запятой на i разрядов влево с одновременным уменьшением порядка на i единиц. В результате такой операции число не изменяется.
|
База |
До нормализации |
После нормализации | ||
|
Порядок |
Мантисса |
Порядок |
Мантисса | |
|
2 |
100 |
0,000110 |
001 |
0,110000 |
|
16 |
8 |
0,001 х 109 |
6 |
0,1 х 1900 |
В примере для шестнадцатеричной системы после нормализации старшая цифра в двоичном представлении содержит впереди три нуля (0001). Это несколько уменьшает точность представления чисел по сравнению с двоичной системой при одинаковом числе двоичных разрядов, отведенных под мантиссу.
Если для записи числа с ПЗ используется база 2 (q = 2), то часто применяют еще один способ повышения точности представления мантиссы, называемый приемом скрытой единицы. Суть его в том, что в нормализованной мантиссе старшая цифра всегда равна единице (для представления нуля используется специальная кодовая комбинация), следовательно, эта цифра может не записываться, а подразумеваться. Запись мантиссы начинают с ее второй цифры, и это позволяет задействовать дополнительный значащий бит для более точного представления числа. Следует отметить, что значение порядка в данном случае не меняется. Скрытая единица перед выполнением арифметических операций восстанавливается, а при записи результата — удаляется. Таким образом, нормализованная мантисса 0,101000(1) при использовании способа «скрытой единицы» будет иметь вид 0,010001 (в скобках указана цифра, не поместившаяся в поле мантиссы при стандартной записи).
Для более существенного увеличения точности вычислений под число отводят несколько машинных слов, например два. Дополнительные биты, как правило, служат для увеличения разрядности мантиссы, однако в ряде случаев часть из них может отводиться и для расширения поля порядка. В процессе вычислений может получаться ненормализованное число. В таком случае ВМ, если это предписано командой, автоматически нормализует его.
Рассмотренные принципы представления чисел с ПЗ поясним на примере. На рис.8.9 представлен типичный 32-битовый формат числа с ПЗ. Старший (левый) бит содержит знак числа. Значение смещенного порядка хранится в разрядах с 1-го по 8-й и может находиться в диапазоне от 0 до 255. Для получения фактического значения порядка из содержимого этого поля нужно вычесть фиксированное значение, равное 128. С таким смещением фактические значения порядка могут лежать в диапазоне от -128 до +127. В примере предполагается, что основание системы счисления равно 2. Третье поле слова содержит нормализованную мантиссу со скрытым разрядом (единицей). Благодаря такому приему 23-разрядное поле позволяет хранить 24-разрядную мантиссу в диапазоне от 0,5 до 1,0.

Рис. 8.9. Типичный 32-битовый формат числа с плавающей запятой.
На рис. 8.10 приведены диапазоны чисел, которые могут быть записаны с помощью 32-разрядного слова.

Рис. 8.10. Числа, представимые в 32-битовых форматах: а — целые числа с фиксированной запятой; б — числа с плавающей запятой.
В варианте с ФЗ для целых чисел в дополнительном коде могут быть представлены все целые числа от -231 до 231 - 1, то есть всего 232 различных чисел (см. рис. 8.10, а). Для случая ПЗ возможны следующие диапазоны чисел (см. рис. 8.10, б):
отрицательные числа между -(1 - 2-24) х 2127 и -0,5 х 2-128;
положительные числа между 0,5 х 2-128 и (1 - 2-24) х 2127.
В эту область не включены пять участков:
отрицательные числа, меньшие чем -(1 - 2-24) х 2127 — отрицательное переполнение;
отрицательные числа, большие чем -0,5 х 2-128 — отрицательная потеря значимости;
положительные числа, меньшие чем 0,5 х 2-28 — положительная потеря значимости;
положительные числа, большие чем (1 - 2-2А) х 2127 — положительное переполнение.
Показанная запись числа с ПЗ не учитывает нулевого значения. Для этой цели используется специальная кодовая комбинация. Переполнения возникают, когда в результате арифметической операции получается значение большее, чем можно представить порядком 127 (2120 х 2100 = 2230). Потеря значимости — это когда результат представляет собой слишком маленькое дробное значение (2-120 х 2-100 = 2-230). Потеря значимости является менее серьезной проблемой, поскольку такой результат обычно рассматривают как нулевой.
Следует также отметить, что числа в форме с ПЗ, в отличие от чисел в форме с ФЗ, размещены на числовой оси неравномерно. Возможные значения в начале числовой оси расположены плотнее, а по мере движения вправо — все реже (рис.8.11). Это означает, что многие вычисления приводят к результату, который не является точным, то есть представляет собой округление до ближайшего значения, представимого в данной форме записи.

Рис. 8.11. Плотность чисел с плавающей запятой на числовой оси.
Для формата, изображенного на рис.8.9, имеет место противоречие между диапазоном и точностью. Если увеличить число битов, отведенных под порядок, расширяется диапазон представимых чисел. Однако, поскольку может быть представлено только фиксированное число различных значений, уменьшается плотность и тем самым точность. Единственный путь увеличения как диапазона, так и точности — увеличение количества разрядов, поэтому в большинстве ВМ предлагается использовать числа в одинарном и двойном форматах. Например, число одинарного формата может занимать 32 бита, а двойного — 64 бита.
Числа с плавающей запятой в разных ВМ имеют несколько различных форматов. В табл. 3.1 приводятся основные параметры для нескольких систем представления чисел в форме с ПЗ. В настоящее время для всех ВМ рекомендован стандарт, разработанный общепризнанным международным центром стандартизации IEEE (Institute of Electrical and Electronics Engineers).
Таблица 8.1. Варианты форматов чисел с плавающей запятой
|
Параметр |
IBM 390 |
VAX |
IEEE 754 |
|
Длина слова(бит) |
О: 32; Д: 64 |
0:32; Д: 64 |
О: 32; Д: 64 |
|
Порядок (бит) |
7 бит |
8 бит |
О:8;Д:11 |
|
Мантисса (F) |
О: 6 цифр; Д: 14 цифр |
О: (1) +23 бита Д:(1) + 55 бит |
О: (1) +23 бита Д:(1) + 52 бита |
|
Смещение порядка |
64 |
128 |
К: 127; Д: 1023 |
|
База |
16 |
2 |
2 |
|
Скрытая 1 |
Нет |
Да |
Да |
|
Запятая |
Слева от мантиссы |
Слева от скрытой 1 |
Справа старшего бита мантиссы |
|
Диапазон F |
(1,16)<=F<1 |
0,5 <= F < 1 |
1<=F<2 |
|
Представление F |
Величина со знаком |
Величина со знаком |
Величина со знаком |
|
Максимальное положительное число |
1663=1076 |
2126 = 1038 |
21 024 = 10 308 (Д) |
|
Точность |
О:16-6=10-7 Д:16-14=10-17 |
0:2-24=10-7 Д: 2-564 = 10-17 |
О:2-23=10-7 Д:2-524=10-16 |
