Числа в форме с плавающей запятой

 

Числа в форме с ПЗ (или в нормальной (полулогарифмической) форме) представляются в виде:

 

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). Этот результат число воспринимается как нулевой.

 

Если увеличивать количество разрядов под порядок без увеличения числа разрядов под мантиссу, то это приведет к потере точности. Для этого числа представляются в формате двойного слова.