
Представление вещественных чисел в эвм
Вещественные числа представляются в форме числа с плавающей запятой (точкой) вида:
±M × n±P,
где M– мантисса (значащая часть числа);n– основание системы счисления;P– порядок числа.
Пример 5.7. Число 2,5 ×1018имеет мантиссу равную 2,5, а порядок равный 18. □
Мантисса называется нормализованной, если ее абсолютное значение лежит в диапазоне:
1/n £ |M| < 1,
где n– основание системы счисления.
Это условие означает, что первая цифра после запятой не равна нулю, а абсолютное значение мантиссы не превышает единицы.
Число с нормализованной мантиссой называется нормализованным.
Пример 5.8. Представить числа –245,62 и 0,00123 в форме числа с плавающей точкой.
Решение. Число –245,62 можно представить в форме числа с порядком –245,62 ×100. Мантисса этого числа не нормализована, поэтому поделим его на 103, увеличив при этом порядок:
–0,24562 ×103.
В результате число –0,24562 ×103нормализовано.
Число 0,00123 в форме числа с порядком 0,00123 ×100не нормализовано, так как не нормализована мантисса. Умножим мантиссу на 102, уменьшив при этом порядок:
0,123 ×10–2.
В результате число 0,123 ×10–2нормализовано. □
В данном примере для нормализации мантиссы запятая сдвигалась вправо или влево. Поэтому такие числа называют числами с плавающей точкой. В отличие от чисел с фиксированной точкой, они значительно ускоряют арифметические операции, при этом каждый раз необходимо нормализовывать мантиссу чисел с плавающей точкой.
Для основанного на стандарте IEEE-754 представления вещественного числа в ЭВМ используютсяm + p + 1 бит, распределяемые следующим образом (Рис. 5 .5): 1 разряд знака мантиссы;pразрядов порядка;mразрядов мантиссы.
Рис. 5.5. Структура общего формата числа с плавающей точкой
Это представление называется (m, p)-форматом.
Диапазон представления чисел X(m, p)-форматом определяется из неравенства:
£X £(1 – 2– m –1)
»
.
При этом порядок числа Pдолжен удовлетворять условию –2p – 1+ 1£P£ 2p – 1– 1
Для вещественных чисел в стандарте IEEE-754 используются (23,8)- и (52,11)-форматы, называемые одинарным и двойным вещественными форматами соответственно (табл. 5 .2).
Чтобы представить значение этих порядков, количество секунд, прошедших с момента образования планеты Земля, составляет всего 1018.
Правило 5.5. (перевод десятичных чисел в (m, p)-формат) Алгоритм перевода десятичного числаXв (m, p)-формат состоит из следующих шагов.
1. Если Х = 0, то принять знаковый разряд, порядок и мантиссу за ноль и закончить алгоритм.
2. Если X > 0, то принять знаковый разряд 0, иначе принять 1. Знаковый разряд сформирован.
3. Перевести целую и дробную часть абсолютного значения числа Xв двоичную систему счисления. Если число дробное, то получитьm+ 1 разрядов. Принять порядок равный нулю.
Таблица 5.2. Сравнительные характеристики вещественных форматов
Характеристики |
Одинарный |
Двойной |
Размер, байт/бит |
4/32 |
8/64 |
Порядок p, бит |
8 |
11 |
Мантисса m, бит |
23 |
52 |
Смещение порядка 2p – 1– 1 |
127 |
1023 |
Количество значащих десятичных цифр мантиссы |
7 .. 8 |
15 .. 16 |
Диапазон десятичных порядков |
–45 .. 38 |
–324 .. 308 |
4. Если X ³ 1, то перенести запятую влево до самого старшего разряда и увеличить порядок, иначе перенести запятую вправо до первого ненулевого (единичного) разряда и уменьшить порядок.
5. Если число разрядов дробной части меньше m, то дополнить дробную часть нулями справа доmразрядов. Отбросить единицу из целой части. Мантисса сформирована.
6. Прибавить к порядку смещение 2p – 1– 1 и перевести порядок в двоичную систему счисления. Порядок сформирован. Код, в котором представлен порядок, называется смещенным. Смещенный порядок упрощает сравнение, сложение и вычитание порядков при арифметических операциях.
7. Записать знаковый разряд, порядок и мантиссу в соответствующие разряды формата.
Пример 5.9. Представить число –25,6875 в одинарном вещественном формате.
Решение. В примере Error: Reference source not found был произведен перевод абсолютного значения числа –25,6875 в двоичную систему и было получено 9 разрядов:
25,6875 = 11001,10112.
Нормализуем число, сдвинув запятую влево и повысив порядок:
1,100110112×24.
После отбрасывания целой части остается 23 разряда дробной части (в соответствии с форматом (23,8)), записываемые как мантисса:
10011011000000000000000.
Порядок равен 4 (степень двойки после сдвига запятой влево). Произведем его смещение и перевод в двоичную систему счисления:
4 + 127 = 131 = 100000112.
Число –25,6875 отрицательное, следовательно, знаковый разряд равен 1.
Все готово для представления числа –25,6875 в одинарном вещественном формате по схеме знаковый разряд + порядок + мантисса:
1 10000011 10011011000000000000000.
Разделим это число по 8 разрядов, сформируем байты и запишем их шестнадцатеричными числами:
11000001 |
11001101 |
10000000 |
00000000 |
C1 |
CD |
80 |
00 |
Таким образом, число –25,6875 можно записать как C1CD8000. □
Как и форматы целых чисел, форматы вещественных чисел хранятся в памяти ЭВМ в обратном порядке следования байт (сначала младшие, потом старшие).
Арифметические операции над числами с плавающей точкой осуществляются в следующем порядке.
При сложении (вычитании) чисел с одинаковыми порядками их мантиссы складываются (вычитаются), а результату присваивается порядок, общий для исходных чисел. Если порядки исходных чисел разные, то сначала эти порядки выравниваются (число с меньшим порядком приводится к числу с большим порядком), а затем выполняется операция сложения (вычитания) мантисс. Если при выполнении операции сложения мантисс возникает переполнение, то сумма мантисс сдвигается влево на один разряд, а порядок суммы увеличивается на 1.
При умножении чисел их мантиссы перемножаются, а порядки складываются.
При делении чисел мантисса делимого делится на мантиссу делителя, а для получения порядка частного из порядка делимого вычитается порядок делителя. При этом если мантисса делимого больше мантиссы делителя, то мантисса частного окажется больше 1 (происходит переполнение) и запятую следует сдвинуть влево, одновременно увеличив порядок частного.