- •Упакованные целые числа
- •Десятичные числа
- •Числа в форме с плавающей запятой
- •Стандарт ieee 754
- •Размещение числовых данных в памяти
- •Символьная информация
- •Видеоинформация
- •Аудиоинформация
- •Типы команд
- •Операции с целыми числами
- •Форматы команд
- •Длина команды
- •Разрядность адресной части
- •Количество адресов в команде
- •Непосредственная адресация
- •Прямая адресация
- •Косвенная адресация
- •Регистровая адресация
- •Косвенная регистровая адресация
- •Относительная адресация
- •Базовая регистровая адресация
- •Страничная адресация
- •Способы адресации в командах управления потоком команд
- •Система операций
- •Показатели эффективности системы операций
- •Выбор системы операций
Числа в форме с плавающей запятой
От недостатков ФЗ в значительной степени свободна форма представления чисел с плавающей запятой (ПЗ), известная также под названиями нормальной или полулогарифмической формы. В данном варианте каждое число разбивается на две группы цифр. Первая группа цифр называется мантиссой, вторая — порядком. Число представляется в виде произведения
X = ±mq±p ,
где т — мантисса числа Х, р — порядок числа, q — основание системы счисления.
Для представления числа в форме с ПЗ требуется задать знаки мантиссы и порядка, их модули в q-ричном коде, а также основание системы счисления (рис.18). Нормальная форма неоднозначна, так как взаимное изменение m ир приводит к «плаванию» запятой, чем и обусловлено название этой формы.
Рис. 18 Форма представления чисел с плавающей запятой
Диапазон и точность представления чисел с ПЗ зависят от числа разрядов, отводимых под порядок и мантиссу. На рис. 19 показаны диапазоны разрядностей порядка и мантиссы, характерные для известных ВМ.
Помимо разрядности порядка и мантиссы, диапазон представления чисел зависит и от основания используемой системы счисления, которое может быть отличным от 2. Например, в универсальных ВМ (мэйнфреймах) фирмы IBM используется база 16. Это позволяет при одинаковом количестве битов, отведенных под порядок, представлять числа в большем диапазоне. Так, если поле порядка равно 7 битам, максимальное значение qp, на которое умножается мантисса, равно 2128 (при q = 2) или 16128 (при q = 16), а диапазоны представления чисел соответственно составят:
10-19 < |Х| < 10+19 и 10-76 < |Х| < 10+76. Известны также случаи использования базы 8, например, в ВМ В-5500 фирмы Burroughs.
Рис.19 Типовые разрядности полей порядка и мантиссы
В большинстве вычислительных машин для упрощения операций над порядками последние приводят к целым положительным числам, применяя так называемый смещенный порядок. Для этого к истинному порядку добавляется целое положительное число — смещение (рис. 20). Например, в системе со смещением 128, порядок -3 представляется как 125 (-3 + 128). Обычно смещение выбирается равным половине представимого диапазона порядков. Смещенный порядок занимает все биты поля порядка, в том числе и тот, который ранее предназначался для записи знака порядка.
Рис. 20 Формат числа с ПЗ со смещенным порядком
Мантисса в числах с ПЗ обычно представляется в нормализованной форме. Это означает, что на мантиссу налагаются такие условия, чтобы она по модулю была меньше единицы (|q|< 1), а первая цифра после запятой отличалась от нуля. Полученная таким образом мантисса называется нормализованной. Для применяемых в ВМ систем счисления можно записать:
-
двоичная: X = т∙2p, (1 > |т| ≥ 1/2);
-
восьмеричная: Х=m∙8р, (1 > |т| ≥ 1/8)
-
шестнадцатеричная: Х=m∙16p, (1 > |т| ≥ 1/16)
Если первые i цифры мантиссы равны нулю, для нормализации ее нужно сдвинуть относительно запятой на х разрядов влево с одновременным уменьшением порядка на i единиц. В результате такой операции число не изменяется:
База |
До нормализации |
После нормализации |
|||
Порядок |
Мантисса |
Порядок |
Мантисса |
||
2 |
100 |
0,000110 |
001 |
0,110000 |
|
16 |
8 |
0,001010 |
6 |
0,101000 |
В примере для шестнадцатеричной системы после нормализации старшая цифра в двоичном представлении содержит впереди три нуля (0001). Это несколько уменьшает точность представления чисел по сравнению с двоичной системой при одинаковом числе двоичных разрядов, отведенных под мантиссу.
Если для записи числа с ПЗ используется база 2 (q = 2), то часто применяют еще один способ повышения точности представления мантиссы, называемый приемом скрытой единицы. Суть его в том, что в нормализованной мантиссе старшая цифра всегда равна единице (для представления нуля используется специальная кодовая комбинация), следовательно, эта цифра может не записываться, а подразумеваться. Запись мантиссы начинают с ее второй цифры, и это позволяет задействовать дополнительный значащий бит для более точного представления числа. Следует отметить, что значение порядка в данном случае не меняется. Скрытая единица перед выполнением арифметических операций восстанавливается, а при записи результата — удаляется. Таким образом, нормализованная мантисса 0,101000(1) при использовании способа «скрытой единицы» будет иметь вид 0,010001 (в скобках указана цифра, не поместившаяся в поле мантиссы при стандартной записи).
Для более существенного увеличения точности вычислений под число отводят несколько машинных слов, например два. Дополнительные биты, как правило, служат для увеличения разрядности мантиссы, однако в ряде случаев часть из них может отводиться и для расширения поля порядка. В процессе вычислений может получаться ненормализованное число. В таком случае ВМ, если это предписано командой, автоматически нормализует его.
Рассмотренные принципы представления чисел с ПЗ поясним на примере [143]. На рис. 2.21 представлен типичный 32-битовый формат числа с ПЗ. Старший (левый) бит содержит знак числа. Значение смещенного порядка хранится в разрядах с 30-го по 23-й и может находиться в диапазоне от 0 до 255.
Рис. 21 Типичный 32-битовый формат числа с плавающей запятой
Для получения фактического значения порядка из содержимого этого поля нужно вычесть фиксированное значение, равное 128. С таким смещением фактические значения порядка могут лежать в диапазоне от -128 до +127. В примере предполагается, что основание системы счисления равно 2. Третье поле слова содержит нормализованную мантиссу со скрытым разрядом (единицей). Благодаря такому приему 23-разрядное поле позволяет хранить 24-разрядную мантиссу в диапазоне от 0,5 до 1,0.
На рис. 22 приведены диапазоны чисел, которые могут быть записаны с помощью 32-разрядного слова.
Рис. 22 Числа, представимые в 32-битовых форматах: а - целые числа с фиксированной запятой; б – числа с плавающей запятой.
В варианте с ФЗ для целых чисел в дополнительном коде могут быть представлены все целые числа от -231 до 231 - 1, то есть всего 232 различных чисел (рис. 22, а). Для случая ПЗ возможны следующие диапазоны чисел (рис. 22, б):
-
отрицательные числа между -(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-128 — положительная потеря значимости;
-
положительные числа, большие чем (1 -2-24)∙2127 — положительное переполнение.
Показанная запись числа с ПЗ не учитывает нулевого значения. Для этой цели используется специальная кодовая комбинация. Переполнения возникают, когда в результате арифметической операции получается значение большее, чем можно представить порядком 127 (2120 х 2100 = 2230). Потеря значимости — это когда результат представляет собой слишком маленькое дробное значение (2-120 ∙ 2-100 =2-230). Потеря значимости является менее серьезной проблемой, поскольку такой результат обычно рассматривают как нулевой.
Следует также отметить, что числа в формате ПЗ, в отличие от чисел в форме с ФЗ, размещены на числовой оси неравномерно. Возможные значения в начале числовой оси расположены плотнее, а по мере движения вправо — все реже (рис. 23). Это означает, что многие вычисления приводят к результату, который не является точным, то есть представляет собой округление до ближайшего значения, представимого в данной форме записи.
Рис. 23 Плотность чисел с плавающей запятой на числовой оси
Для формата, изображенного на рис 21, имеет место противоречие между диапазоном и точностью. Если увеличить число битов, отведенных под порядок, расширяется диапазон представимых чисел. Однако, поскольку может быть представлено только фиксированное число различных значений, уменьшается плотность и тем самым точность. Единственный путь увеличения как диапазона, так и точности — увеличение количества разрядов, поэтому в большинстве ВМ предлагается использовать числа в одинарном и двойном форматах. Например, число одинарного формата может занимать 32 бита, а двойного — 64 бита.
Числа с плавающей запятой в разных ВМ имеют несколько различных форматов. В табл. 7 приводятся основные параметры для нескольких систем представления чисел в форме с ПЗ. В настоящее время для всех ВМ рекомендован стандарт, разработанный общепризнанным международным центром стандартизации IEEE (Institute of Electrical and Electronics Engineers).
Табл. 7 Варианты форматов чисел с плавающей запятой
Параметр |
IBM 390 |
VAX |
IEEE 754 |
Длина слова, бит |
О:32; Д: 64 |
О:32; Д: 64 |
О:32; Д: 64 |
Порядок, бит |
7 |
8 |
О:8; Д: 11 |
Мантисса,m |
О:6 цифр Д: 14 цифр |
О: (1) + 23 бита Д: (1) + 55 бита |
О: (1) + 23 бита Д: (1) + 52 бита |
Смещение порядка |
64 |
128 |
О:127; Д: 1023 |
Основание системы счисления |
16 |
2 |
2 |
Скрытая 1 |
Нет |
Да |
Да |
Запятая |
Слева от мантиссы |
Слева от скрытой 1 |
Справа от старшего бита мантиссы |
Диапазон мантиссы |
(1/16)≤m<1 |
(1/2)≤m<1 |
1≤m<1 |
Представление мантиссы |
Величина со знаком |
Величина со знаком |
Величина со знаком |
Максимальное положительное число |
1663≡1076 |
2126≡1038 |
21024≡10308 (Д) |
Точность |
О: 16-6≡10-7 Д: 16-14≡10-17 |
О: 2-24≡10-7 Д: 2-564≡10-17 |
О: 2-23≡10-7 Д: 2-524≡10-16 |
Где О – одинарный формат; Д – двойной формат.