Для представления вещественных чисел используется формат с плавающей точкой. Вещественные числа всегда рассматриваются как числа со знаком. Разрядная сетка имеет строго фиксированное число разрядов.
В основе формата лежит представление чисел в экспоненциальной (научной) форме. Число в этой форме записывается в виде мантиссы и порядка:
A = ± M · S ± P ,
где M – мантисса,
S – основание системы счисления,
p – порядок.
Пример. A[10] = 0.0225·103 = 0.225 · 102 = 2.25·101 = 22.5·100 =225·10-1 = 22.5
В формате с плавающей точкой кодируется: мантисса, порядок, знак числа и знак порядка. На каждую из кодируемых компонент отводится строго фиксированное число разрядов. Основание системы счисления заранее оговаривается и не кодируется.
Фиксированная по длине мантисса позволяет закодировать ограниченное количество значащих цифр. Поэтому вещественные числа в общем случае хранятся и обрабатываются с определенной степенью точности. Точность определяется способом кодировки мантиссы, а диапазон чисел – способом кодировки порядка.
Способ кодировки мантиссы и порядка в различных ЭВМ может быть разным. Отметим общие подходы при кодировании вещественных чисел.
Кодируемое число предварительно нормализуется. За счет сдвига мантиссы и изменения порядка добиваются выполнения условия
S-1£|M|<1. ( 1)
В рассмотренном примере этому условию соответствует запись числа в виде A[10] = 0.225·102.
В нормализованном числе целая часть мантиссы будет нулем, а старшая цифра дробной части будет отличной от нуля. Этот прием позволяет отказаться от хранения целой части и закодировать в мантиссе максимально возможное количество значащих цифр, то есть добиться максимальной точности. Мантисса записывается в прямом коде, причем знак мантиссы (он же знак числа) заносится в старший разряд. Знак положительного числа кодируется как 0, а знак отрицательного – как 1.
Порядок кодируется в виде так называемой характеристики. Характеристика Z представляет собой смещенный порядок: Z = P + D. Величина смещения D подбирается так, чтобы характеристика для минимального порядка была равна нулю. Этот прием позволяет использовать в качестве характеристики число без знака и не кодировать специально знак порядка. Обобщенный вид формата с плавающей точкой показан на рисунке:
n-1 0 m-1 0
Знак числа | Характеристика | Мантисса |
Типичные для персональных ЭВМ варианты формата с плавающей точкой приведены в таблице 3.
Таблица 3
Длина формата (бит) | Длина Мантиссы, (бит) | Длина характеристики, (бит) | Диапазон чисел по модулю в десятичном эквиваленте | Точность представления, (десятичные цифры) |
32 | 23 | 8 | » |10-38| ¸ |1038| | 7 |
64 | 52 | 11 | » |10-308| ¸ |10308| | 15 |
Отличия в кодировании вещественных чисел для разных ЭВМ носят количественный и качественный характер. Отличия количественного характера проявляются в различной длине мантиссы и порядка, а качественные – в системе счисления, в которой выполняется нормализация и определение порядка. Чаще всего применяется шестнадцатеричная или двоичная нормализация.
Шестнадцатеричная нормализация. Число нормализуется по рассмотренному выше общему правилу (1), чтобы 16-1£|M|<1. В этом случае старшая шестнадцатеричная цифра мантиссы отлична от нуля. Шестнадцатеричная нормализация обычно используется в универсальных ЭВМ.
Рассмотрим типичный вариант формата.
Длина формата – 32 разряда.
Длина мантиссы m=24.
Длина характеристики n=7.
Знак – 1 разряд.
Правила формирования характеристики: Z[16] = 40[16] + P[16].
Пример: A[10] = 5.5 Þ A[16] =5.8·160
Нормализуем А[16] =0.58·161.
Получаем Z[16] = 40+1 = 41
M[16] = 0.58
Знак = 0 (+)
4 | 1 | 58 | 00 | 00 | [16] |
0 | 1000001 |
|
Пример: A[10] = -32.5 Þ A[16] = -20.8 · 160
Нормализуем А[16] = - 0.208 · 162
Получаем Z[16] = 40 +2 = 42
M[16] =0.208
Знак = 1 (-)
С | 2 | 20 | 80 | 00 | [16] |
1 | 1000010 |
|
Двоичная нормализация. Нормализация выполняется по правилу, несколько отличающемуся от общего: за счет сдвига мантиссы и изменения порядка двоичного числа добиваются выполнения условия 1£|M|<2. В этом случае целая часть мантиссы будет содержать одну двоичную цифру, причем она будет равна единице. Обязательную единицу можно отбросить и в коде не хранить. Это позволяет использовать дополнительный разряд для хранения дробной части и тем самым увеличить точность представления числа. Двоичная нормализация обычно используется в мини и микро- ЭВМ. Рассмотрим типичный вариант формата.
Длина формата – 32 разряда.
Число разрядов мантиссы m=23.
Число разрядов характеристики n=8.
Знак – 1 разряд.
Правила формирования характеристики: Z[2] = 27 – 1 + P[2] или Z[10] = 127[10] + P[10].
Пример: A[10] = 0.75 Þ A[2] =0.11·20
Нормализуем А[2] =1.1·2-1 и отбрасываем старшую единицу.
Получаем Z[10] = 127-1 = 126
M[2] = .10000000000000000000000
Знак = 0 (+)
0 | 011 1111 0 | 100 0000 0000 0000 0000 0000 |
3 F 4 0 0 0 0 0[16] |
При одинаковых количественных характеристиках (длине мантиссы и длине характеристики) шестнадцатеричная нормализация позволяет получить больший диапазон чисел, но имеет меньшую точность.
Дата: 2019-02-02, просмотров: 253.