101
правка
Изменения
Слегка изменил распределение подразделов по разделам.
В совокупности эти факторы делают Quadruple весьма экзотичным и редко встречающимся форматом чисел с плавающей запятой.
=== Диапазон значений чисел с плавающей запятой ===
Диапазон чисел, которые можно записать данным способом, зависит от количества бит, отведённых для представления мантиссы и показателя. Пара значений показателя (когда все разряды нули и когда все разряды единицы) зарезервирована для обеспечения возможности представления специальных чисел. К ним относятся ноль, значения NaN (Not a Number, "не число", получается как результат операций типа деления нуля на ноль) и <tex>\pm\infty</tex>.
Данная таблица только лишь примерно указывает границы допустимых значений, без учета возрастающей погрешности с ростом абсолютного значения и существования [[#Денормализованные числа|денормализованных чисел]].
<!-- TODO: Выкинуть нафиг эту бессмысленную таблицу, переписать весь раздел, привести распределение значений и формулу для подсчета их количества -->
<center>
<table border=1 CellSpacing="0" CellPadding="2">
<tr><th>Название (IEEE 754)</th><th>Тип (C)</th><th>Диапазон</th><th>Биты мантиссы</th><th>Биты</th></tr>
<tr><td>Half precision</td><td>Нет</td><td>6,10×10<sup>-5</sup>..65504</td><td>10+1</td><td>16</td></tr>
<tr><td>Single precision</td><td>float</td><td>3,4×10<sup>-38</sup>..3,4×10<sup>38</sup></td><td>23+1</td><td>32</td></tr>
<tr><td>Double precision</td><td>double</td><td>1,7×10<sup>-308</sup>..1,7×10<sup>308</sup></td><td>52+1</td><td>64</td></tr>
<tr><td>Extended precision</td><td>Нет, иногда long double</td><td>3,4×10<sup>-4932</sup>..3,4×10<sup>4932</sup></td><td>64+1</td><td>80</td></tr>
</table>
</center>
== Особые значения чисел с плавающей точкой ==
== Диапазон значений чисел с плавающей запятой ==Диапазон чисел, которые можно записать данным способом, зависит от количества бит, отведённых для представления мантиссы и показателя. Пара значений показателя (когда все разряды нули и когда все разряды единицы) зарезервирована для обеспечения возможности представления специальных чисел. К ним относятся ноль, значения NaN (Not a Number, "не число", получается как результат операций типа деления нуля на ноль) и <tex>\pm\infty</tex>. <!-- TODO: Выкинуть нафиг эту бессмысленную таблицу, переписать весь раздел, привести распределение значений и формулу для подсчета их количества --> <center> <table border=1 CellSpacing="0" CellPadding="2"> <tr><th>Название (IEEE 754)</th><th>Тип (C)</th><th>Диапазон</th><th>Биты мантиссы</th><th>Биты</th></tr> <tr><td>Half precision</td><td>Нет</td><td>6,10×10<sup>-5</sup>..65504</td><td>10+1</td><td>16</td></tr> <tr><td>Single precision</td><td>float</td><td>3,4×10<sup>-38</sup>..3,4×10<sup>38</sup></td><td>23+1</td><td>32</td></tr> <tr><td>Double precision</td><td>double</td><td>1,7×10<sup>-308</sup>..1,7×10<sup>308</sup></td><td>52+1</td><td>64</td></tr> <tr><td>Extended precision</td><td>Нет, иногда long double</td><td>3,4×10<sup>-4932</sup>..3,4×10<sup>4932</sup></td><td>64+1</td><td>80</td></tr> </table> </center> == Денормализованные числа ===
'''Денормализованные числа''' (''denormalized\subnormal numbers'') - это способ увеличить количество представимых числом с плавающей запятой значений около нуля, дабы повысить точность вычислений. Каждое значение денормализованного числа меньше самого маленького '''нормализованного''' ("обычного") значения числа с плавающей запятой.
Согласно стандарту, если порядок равен своему минимальному значению (все его биты - нули, а порядок формально равен своему сдвигу) и все биты мантиссы равны нулю, то это <tex>\pm0</tex>. Если же мантисса не равна нулю, то это число с порядком, на единицу большим минимального (все биты порядка, кроме младшего - нули) и данной мантиссой, целая часть которой считается равной нулю, а не единице.