Числа в форме с плавающей запятой
Числа в форме с ПЗ (или в нормальной (полулогарифмической) форме) представляются в виде:
X = ± mq±p,
где m – мантисса числа X, р – порядок числа, q – основание системы счисления
Модуль порядка | Модуль мантиссы | |||||||||
знак m | знак р | pr-1 | …… | p1 | p0 | . | m-1 | m-2 | …… | m-n |
Рис. Форма представления чисел с плавающей запятой
Диапазон и точность представления чисел с ПТ зависят от числа разрядов, отводимых под порядок и мантиссу, также от основания используемой системы счисления ( в двоичной системе 10-19< abs X < 10+19; в шестнадцатеричной системе 10-76< abs X < 10+76 ).
Как видно из рисунка, имеется два знаковых разряда, что достаточно неудобно. В связи с этим, с целью выделения дополнительного разряда под порядок и упрощения операций над ними, порядки приводят к целым положительным числам, применяя так называемый смещенный порядок. Для этого к истинному порядку добавляется целое положительное число - смещение (если смещение 128, то порядок -3 представляется как 125 (-3+128). Обычно смещение выбирается равным половине представимого диапазона.
Смещенный порядок | Модуль мантиссы | |||||||||
знак m | pr | pr-1 | …… | p1 | p0 | . | m-1 | m-2 | …… | m-n |
Рис. Форма представления чисел с плавающей запятой со смещенным порядком
В памяти ЭВМ вещественные числа (с ПЗ) хранятся в нормализованном виде. При этой форме записи модуль мантиссы ½q½< 1, а первая цифра после точки отлична от нуля.
Если первые i цифр мантиссы равны нулю, то для нормализации, её необходимо сдвинуть относительно точки на i разрядов влево с одновременным уменьшением порядка на i единиц. При этом само число не изменится.
Пример: 0,0001110*2100 - число до нормализации
0,1110*2001 - число после нормализации
Для повышения точности представления мантиссы (за счет увеличения количества разрядов, отводимых под мантиссу) используется метод скрытой единицы. Суть его в том, что так как все числа с ПЗ хранятся в памяти в нормализованном виде, то старшая цифра всегда равна 1 и поэтому запись мантиссы начинают со второго числа, что дает возможность использовать дополнительный разряд и тем самым повысить точность её представления. При выполнении арифметических операций, скрытая единица автоматически восстанавливается, а после получения результата – удаляется.
Пример: 0, 10001011(1) – без использования скрытой единицы
0, 00010111 – при использовании скрытой единицы
Для повышения точности вычислений увеличивают количество разрядов отводимых под мантиссу.
1 8 | 9 31 | |
Знак мантиссы | Смещенный порядок | Мантисса (со скрытым разрядом) |
Рис. 32 – разрядный формат чисел с ПЗ
Значения смещенного прядка находятся в диапазоне от 0 до 255 (разряды 1-8). Для получения фактического порядка необходимо из смещенного порядка вычесть 128. В этом случае имеем диапазон порядка от - - 128 до + 127. Поле мантиссы имеет 23 разряда, а при использовании скрытой единицы оно составит уже 24 разряда.
![]() | ![]() |
-231 0 231-1
Рис. Диапазон представления целых чисел с ФЗ (32 разряда)
Отрицательное переполнение | Представимые отрицательные числа | Отрицательная потеря значимости | Положительная потеря значимости | Представимые положительные числа | Положительное переполнение |
-(1-2-24)*2127 -0,5*2-128 0 0,5*2-128 (1-2-24)*2127
Рис. Диапазон представления чисел с ПЗ (32 разряда)
Для случая чисел с ПЗ возможны следующие диапазоны:
· Отрицательные числа между -(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 (например 2200).
Если получается число, близкое к нулю, то возникает потеря значимости (например 2-200). Этот результат число воспринимается как нулевой.
Если увеличивать количество разрядов под порядок без увеличения числа разрядов под мантиссу, то это приведет к потере точности. Для этого числа представляются в формате двойного слова.