- •Кодирование действительных чисел Мантисса и порядок
- •Нормальная и нормализованная форма
- •Машинное представление действительных чисел
- •Диапазон значений чисел с плавающей точкой
- •Машинная эпсилон (машинный ноль)
- •Особые значения чисел с плавающей точкой Ноль (со знаком)
- •Неопределенность (NaN)
- •Бесконечности
- •Арифметические действия над нормализованными числами
Машинное представление действительных чисел
Действительные числа в компьютерах различных типов записываются по-разному. При этом программисту обычно предоставляется возможность выбора из нескольких числовых форматов наиболее подходящего для конкретной задачи — с использованием четырех, шести, восьми или десяти байтов. При этом лишь некоторые из действительных чисел могут быть представлены в памяти компьютера точным значением, в то время как остальные числа представляются приближёнными значениями.
Число с плавающей точкой состоит из набора отдельных двоичных разрядов, условно разделенных на так называемые знак, порядок и мантиссу. В наиболее распространённом формате (стандарт IEEE 754) число с плавающей запятой представляется в виде набора битов, часть из которых кодирует собой мантиссу числа, другая часть — показатель степени, и ещё один бит используется для указания знака числа (0 - если число положительное, 1 - если число отрицательное). При этом порядок записывается как целое число в коде со сдвигом, а мантисса - в нормализованном виде, своей дробной частью в двоичной системе счисления. Вот пример такого числа из 16 двоичных разрядов:
Знак |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
Порядок |
Мантисса |
||||||||||||||||||||
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|||||||
|
14 |
10 |
9 |
0 |
||||||||||||||||||
Знак ‑ один бит, указывающий знак всего числа с плавающей точкой. Порядок и мантисса — целые числа, которые вместе со знаком дают представление числа с плавающей запятой в определенном нами виде (1).
Типы чисел с плавающей точкой (по IEEE 754)
Познакомиться самостоятельно, например, на Викиконспекте
Диапазон значений чисел с плавающей точкой
Диапазон
чисел, которые можно записать данным
способом, зависит от количества бит,
отведённых для представления мантиссы
и показателя. Пара значений показателя
(когда все разряды нули и когда все
разряды единицы) зарезервирована для
обеспечения возможности представления
специальных чисел. К ним относятся ноль,
значения NaN (Not a Number, "не число",
получается как результат операций типа
деления нуля на ноль) и
.
Данная таблица только лишь примерно указывает границы допустимых значений, без учета возрастающей погрешности с ростом абсолютного значения и существования денормализованных чисел.
Название (IEEE 754) |
Тип в языке программирования Cи |
Диапазон |
Биты мантиссы |
Биты |
Half precision |
Нет |
6,10×10-5..65504 |
10+1 |
16 |
Single precision |
float |
3,4×10-38..3,4×1038 |
23+1 |
32 |
Double precision |
double |
1,7×10-308..1,7×10308 |
52+1 |
64 |
Extended precision |
Нет, на некоторых архитектурах long double |
3,4×10-4932..3,4×104932 |
64+1 |
80 |
