Числовая последовательность

Нормальная и нормализованная форма[править]

Нормальной формой (англ. normal form) числа с плавающей запятой называется такая форма, в которой мантисса (без учёта знака) в десятичной системе находится на полуинтервале . Такая форма записи имеет недостаток: некоторые числа записываются неоднозначно (например, можно записать в 4 формах — , , , ), поэтому распространена также другая форма записи — нормализованная (англ. normalized), в которой мантисса десятичного числа принимает значения от (включительно) до (не включительно), а мантисса двоичного числа принимает значения от (включительно) до (не включительно). То есть в мантиссе слева от запятой до применения порядка находится ровно один знак. В такой форме любое число (кроме ) записывается единственным образом. Ноль же представить таким образом невозможно, поэтому стандарт предусматривает специальную последовательность битов для задания числа (а заодно и некоторых других , таких как и ).
Так как старший двоичный разряд (целая часть) мантиссы вещественного числа в нормализованном виде всегда равен «», то его можно не записывать, сэкономив таким образом один бит, что и используется в стандарте IEEE 754. В позиционных системах счисления с основанием большим, чем (в троичной, четверичной и др.), этого замечательного свойства нет (ведь целая часть там может быть не только единицей).

Порядок числа

При работе с числами, представленными в некоторой системе счисления по основанию b{\displaystyle b}, чаще всего принимают r=b{\displaystyle r=b} и 1∈C1{\displaystyle 1\in {\mathcal {C}}_{1}}, b∈C2{\displaystyle b\in {\mathcal {C}}_{2}}. При этом n{\displaystyle n} совпадает с количеством цифр в числе, если его записать в позиционной системе счисления.

Например для десятичной системы счисления в этом случае каждая декада положительных чисел будет принадлежать только одному порядку:

  • C1⊃{1,2,3,4,5,6,7,8,9}{\displaystyle {\mathcal {C}}_{1}\supset \lbrace {}1,2,3,4,5,6,7,8,9\rbrace }
  • C2⊃{10,20,30,40,50,60,70,80,90}{\displaystyle {\mathcal {C}}_{2}\supset \lbrace {}10,20,30,40,50,60,70,80,90\rbrace }
  • C3⊃{100,200,300,400,500,600,700,800,900}{\displaystyle {\mathcal {C}}_{3}\supset \lbrace {}100,200,300,400,500,600,700,800,900\rbrace }

Аналогичным образом можно определить порядки чисел и для других оснований системы счисления. Чаще других рассматривают

  • порядки чисел по основанию b=10{\displaystyle b=10},
  • порядки чисел по основанию b=2{\displaystyle b=2}
  • порядки чисел по основанию b=e{\displaystyle b=e}.

Порядок чисел в естественном языке

В естественных языках встречаются выражения вроде «на порядок больше», «на много порядков больше», «на пару порядков меньше». В большинстве случаев подразумеваются десятичные порядки, то есть эти выражения можно прочитать как «примерно в десять раз больше», «примерно в 10n{\displaystyle 10^{n}} раз больше, где n{\displaystyle n} — достаточно велика», «примерно в 100 раз меньше».

Типы чисел с плавающей точкой (по IEEE 754)[править]

Число половинной точности (Binary16, Half precision)править

Число́ полови́нной то́чности  — компьютерный формат представления чисел, занимающий в памяти половину машинного слова (в случае 32-битного компьютера — бит или байта). В силу невысокой точности этот формат представления чисел с плавающей запятой обычно используется в видеокартах, где небольшой размер и высокая скорость работы важнее точности вычислений.

Знак
Порядок Мантисса
1,
14 10 9

Порядок записан со сдвигом . То есть чтобы получить актуально значение порядка нужно вычесть из него сдвиг. Сдвиг можно получить по формуле , где — число бит, отведенное на хранение порядка (в случае числа половинной точности ).

Ограничения точности

  • Целые от нуля до передаются как есть.
  • Целые от до округляются к ближайшему чётному целому.
  • Целые от до округляются до ближайшего целого, делящегося нацело на четыре.
  • Целые от до округляются до ближайшего целого, делящегося на восемь.
  • Целые от до округляются до ближайшего целого, делящегося на шестнадцать.
  • Целые от до округляются до ближайшего целого, делящегося на тридцать два.

Число одинарной точности (Binary32, Single precision, float)править

Число́ одина́рной то́чности — компьютерный формат представления чисел, занимающий в памяти одно машинное слово (в случае 32-битного компьютера — бита или байта). Используется для работы с вещественными числами везде, где не нужна очень высокая точность.

Знак
Порядок (8 бит) Мантисса (23+1 бита)
1,
30 23 22

Порядок записан со сдвигом .

Число двойной точности (Binary64, Double precision, double)править

Число́ двойно́й то́чности
компьютерный формат представления чисел, занимающий в памяти два машинных слова (в случае 32-битного компьютера — бита или байт). Часто используется благодаря своей неплохой точности, даже несмотря на двойной расход памяти и сетевого трафика относительно чисел одинарной точности.

Знак
Порядок(11 бит) Мантисса(52+1 бит)
1,
62 52 51

Порядок записан со сдвигом .

Число четверной точности (Binary128, Quadruple precision)править

Число́ четверно́й то́чности
компьютерный формат представления чисел, занимающий в памяти четыре машинных слова (в случае 32-битного компьютера — бит или байт). Используется в случае необходимости крайне высокой точности.

Знак
Порядок(15 бит) Мантисса(112+1 бит)
1,
126 112 111
Мантисса(112+1 бит)

Порядок записан со сдвигом .

Обычно этот формат реализуется программно, случаи аппаратной реализации крайне редки. Также не гарантируется поддержка этого типа в языках программирования, хотя кое-где она и реализована (например, компилятор gcc для архитектуры x86 позволяет использовать тип __float128, являющийся программной реализацией числа с четверной точностью).
В совокупности эти факторы делают Quadruple весьма экзотичным и редко встречающимся форматом чисел с плавающей запятой.

Диапазон значений чисел с плавающей запятойправить

Диапазон чисел, которые можно записать данным способом, зависит от количества бит, отведённых для представления мантиссы и показателя. Пара значений показателя (когда все разряды нули и когда все разряды единицы) зарезервирована для обеспечения возможности представления специальных чисел. К ним относятся ноль, значения NaN (Not a Number, «не число», получается как результат операций типа деления нуля на ноль) и .

Данная таблица только лишь примерно указывает границы допустимых значений, без учета возрастающей погрешности с ростом абсолютного значения и существования .

Название в IEEE 754 Название типа переменной в Си Диапазон значений Бит в мантиссе Бит на переменную
Half precision 6,10×10-5..65504 11 16
Single presicion float -3,4×1038..3,4×1038 23 32
Double precision double -1,7×10308..1,7×10308 53 64
Extended precision На некоторых архитектурах (например в сопроцессоре Intel) long double -3,4×104932..3,4×104932 65 80