Изменения
Нет описания правки
Вещественные числа обычно представляются в виде чисел с плавающей запятой. Числа с плавающей запятой — один из возможных способов предсталения представления действительных чисел, который является компромиссом между точностью и диапазоном принимаемых значений, его можно считать аналогом экспоненциальной записи чисел, но только в памяти компьютера.
Число с плавающей запятой состоит из набора отдельных двоичных разрядов, условно разделенных на так называемые '''знак'''(англ.'' sign''), '''порядок''' (англ. ''exponent'') и '''мантиссу'''(англ. ''mantis''). В наиболее распространённом формате (стандарт IEEE 754) число с плавающей запятой представляется в виде набора битов, часть из которых кодирует собой мантиссу числа, другая часть — показатель степени, и ещё один бит используется для указания знака числа (<tex>0 </tex> {{- --}} если число положительное, <tex>1 </tex> {{--- }} если число отрицательное). При этом порядок записывается как целое число в [[Представление целых чисел: прямой код, код со сдвигом, дополнительный код|коде со сдвигом]], а мантисса {{--- }} в [[#Нормальная и нормализованная форма|нормализованном виде]], своей дробной частью в двоичной системе счисления. Вот пример такого числа из <tex>16 </tex> двоичных разрядов:
{|class="wikitable" style="border-collapse: collapse; border: none"
|-
|}
Знак {{- --}} один бит, указывающий знак всего числа с плавающей точкой. Порядок и мантисса — целые числа, которые вместе со знаком дают представление числа с плавающей запятой в следующем виде:
<tex>(-1)^s S \times M \times B^E</tex>, где s — <tex>S</tex> {{---}} знак, <tex>B</tex> {{---}} основание, <tex>E — </tex> {{---}} порядок, а <tex>M — </tex> {{---}} мантисса.Десятичное число, записываемое как <tex> ReE</tex>, где <tex>R</tex> {{---}} число в полуинтервале <tex>[1; 10)</tex>, <tex>E</tex> {{---}} степень, в которой стоит множитель <tex>10</tex>; в нормализированной форме модуль <tex>R</tex> будет являться мантиссой, а <tex>E</tex> {{---}} порядком, а <tex>S</tex> будет равно <tex>1</tex> тогда и только тогда, когда <tex>R</tex> принимает отрицательное значение.Например, в числе <tex>-2435e9</tex> * <tex>S</tex> <tex>=</tex> <tex>1</tex>* <tex>B</tex> <tex>=</tex> <tex>10</tex>* <tex>M</tex> <tex>=</tex> <tex>2435</tex>* <tex>E</tex> <tex>=</tex> <tex>9</tex>
Порядок также иногда называют '''экспонентой''' или просто '''показателем степени'''.
<!-- TODO:Абзац ниже нужно перенести в раздел с проблемами чисел -->
При этом лишь некоторые из вещественных чисел могут быть представлены в памяти компьютера точным значением, в то время как остальные числа представляются приближёнными значениями. Попробуйте, скажем, перевести число <tex>0.2</tex> в двоичную систему счисления - получится бесконечная запись <tex>0,(0011)</tex>
Более простым вариантом представления вещественных чисел является вариант с фиксированной точкой, когда целая и вещественная части хранятся отдельно. Например, на целую часть отводится всегда <tex>X</tex> бит и на дробную отводится всегда <tex>Y</tex> бит. Такой способ в архитектурах процессоров не присутствует. Отдаётся предпочтение числам с плавающей запятой, как компромиссу между диапазоном допустимых значений и точностью.
== Нормальная и нормализованная форма ==
'''Нормальной формой''' (англ. ''normal form'') числа с плавающей запятой называется такая форма, в которой мантисса (без учёта знака) в десятичной системе находится на полуинтервале <tex>[0; 1)</tex>. Такая форма записи имеет недостаток: некоторые числа записываются неоднозначно (например, <tex>0{,}0001 </tex> можно записать в 4 формах — <tex>0{,0001×10}0001 \times 10</tex><sup><tex>0</tex></sup>, <tex>0{,001×10}001 \times 10</tex><sup><tex>−1</tex></sup>, <tex>0{,01×10}01 \times 10</tex><sup><tex>−2</tex></sup>, <tex>0{,1×10}1 \times 10</tex><sup><tex>−3</tex></sup>), поэтому распространена также другая форма записи — '''нормализованная'''(англ. ''normalized''), в которой мантисса десятичного числа принимает значения от <tex>1 </tex> (включительно) до <tex>10 </tex> (не включительно), а мантисса двоичного числа принимает значения от <tex>1 </tex> (включительно) до <tex>2 </tex> (не включительно). То есть в мантиссе слева от запятой до применения порядка находится ровно один знак. В такой форме любое число (кроме <tex>0</tex>) записывается единственным образом. Ноль же представить таким образом невозможно, поэтому стандарт предусматривает специальную последовательность битов для задания числа <tex>0 </tex> (а заодно и некоторых других [[#Особые значения чисел с плавающей точкой|полезных чисел]], таких как <tex>-\infty</tex> и <tex>+\infty</tex>).Так как старший двоичный разряд (целая часть) мантиссы вещественного числа в нормализованном виде всегда равен «1»«<tex>1</tex>», то его можно не записывать, сэкономив таким образом один бит, что и используется в стандарте IEEE 754. В позиционных системах счисления с основанием большим, чем <tex>2 </tex> (в троичной, четверичной и др.), этого замечательного свойства нет (ведь целая часть там может быть не только единицей).{|class="wikitable" style="border-collapse: collapse; border: none"|-!colspan=5 style="background-color: powderblue; border: thin solid black; border-bottom: none"|Знак|-!style="background-color: powderblue; border: thin solid black; border-top: none"|!colspan=5 style="background-color: lightgreen; border: thin solid black"|Порядок!colspan=11 style="background-color: lightcoral; border: thin solid black"|Мантисса|-style="text-align: right"!style="background-color: powderblue; border: thin solid black"|0!style="background-color: lightgreen; border: thin solid black"|0!style="background-color: lightgreen; border: thin solid black"|0!style="background-color: lightgreen; border: thin solid black"|0!style="background-color: lightgreen; border: thin solid black"|0!style="background-color: lightgreen; border: thin solid black"|0!style="border: none"|1,!style="background-color: lightcoral; border: thin solid black"|0!style="background-color: lightcoral; border: thin solid black"|0<!-- 8 бит -->!style="background-color: lightcoral; border: thin solid black"|0!style="background-color: lightcoral; border: thin solid black"|0!style="background-color: lightcoral; border: thin solid black"|0!style="background-color: lightcoral; border: thin solid black"|0!style="background-color: lightcoral; border: thin solid black"|0!style="background-color: lightcoral; border: thin solid black"|0!style="background-color: lightcoral; border: thin solid black"|0!style="background-color: lightcoral; border: thin solid black"|0|-|style="border: none"| |colspan=2 style="border: none; border-left: 1px solid gray; text-align: left"|14|colspan=3 style="border: none; border-right: 1px solid gray; text-align: right"|10|style="border: none"| |colspan=5 style="border: none; border-left: 1px solid gray; text-align: left"|9|colspan=5 style="border: none; border-right: 1px solid gray; text-align: right"|0|}
== Типы чисел с плавающей точкой (по IEEE 754) ==
=== Число половинной точности (''Binary16'', ''Half precision'') ===
'''Число́ полови́нной то́чности''' — компьютерный формат представления чисел, занимающий в памяти половину машинного слова (в случае 32-битного компьютера — <tex>16 </tex> бит или <tex>2 </tex> байта). В силу невысокой точности этот формат представления чисел с плавающей запятой обычно используется в видеокартах, где небольшой размер и высокая скорость работы важнее точности вычислений.
{|class="wikitable" style="border-collapse: collapse; border: none"
|colspan=4 style="border: none; border-right: 1px solid gray; text-align: right"|0
|}
Порядок записан [[Представление целых чисел: прямой код, код со сдвигом, дополнительный код|со сдвигом]] '''<tex>-15</tex>'''. Это означает, что если дан порядок 01101То есть чтобы получить актуально значение порядка нужно вычесть из него сдвиг. Сдвиг можно получить по формуле <subtex>2^{b-1}-1</subtex> то он на самом деле равен не 13, а где <tex>b</tex> {{--2 -}} число бит, отведенное на хранение порядка (потому как в случае числа половинной точности <tex>13-15b=-25</tex>).
'''Ограничения точности'''
* Целые от нуля до <tex>2048 </tex> передаются как есть.* Целые от <tex>2049 </tex> до <tex>4096 </tex> округляются к ближайшему чётному целому.* Целые от <tex>4097 </tex> до <tex>8192 </tex> округляются до ближайшего целого, делящегося нацело на 4четыре.* Целые от <tex>8193 </tex> до <tex>16384 </tex> округляются до ближайшего целого, делящегося на 8восемь.* Целые от <tex>16385 </tex> до <tex>32768 </tex> округляются до ближайшего целого, делящегося на 16шестнадцать.* Целые от <tex>32769 </tex> до <tex>65535 </tex> округляются до ближайшего целого, делящегося на 32тридцать два.
=== Число одинарной точности (''Binary32'', ''Single precision'', ''float'') ===
'''Число́ одина́рной то́чности''' — компьютерный формат представления чисел, занимающий в памяти одно машинное слово (в случае 32-битного компьютера — <tex>32 </tex> бита или <tex>4 </tex> байта). Используется для работы с вещественными числами везде, где не нужна очень высокая точность.
{|class="wikitable" style="background-color: transparent; border-collapse: collapse; border: none"
!style="background-color: powderblue; border: thin solid black; border-top: none"|
!colspan=8 style="background-color: lightgreen; border: thin solid black"|Порядок (8 бит)
!colspan=24 style="background-color: lightcoral; border: thin solid black"|Мантисса (2423+1 бита)
|-style="text-align: right"
!style="background-color: powderblue; border: thin solid black"|0
|style="border: none"|
|colspan=4 style="border: none; border-left: 1px solid gray; text-align: left"|30
|colspan=4 style="border: none; border-right: 1px solid gray; text-align: right"|2423
|style="border: none"|
|colspan=20 style="border: none; border-left: 1px solid gray; text-align: left"|2322
|colspan=3 style="border: none; border-right: 1px solid gray; text-align: right"|0
|}
Порядок записан со сдвигом '''<tex>-127</tex>'''.
'''Число́ двойно́й то́чности''' —
компьютерный формат представления чисел, занимающий в памяти два машинных слова (в случае 32-битного компьютера — <tex>64 </tex> бита или <tex>8 </tex> байт). Часто используется благодаря своей неплохой точности, даже не смотря несмотря на двойной расход памяти и сетевого трафика относительно чисел одинарной точности.
{|class="wikitable" style="border-collapse: collapse; border: none"
|colspan=4 style="border: none; border-right: 1px solid gray; text-align: right"|0
|}
Порядок записан со сдвигом '''<tex>-1023</tex>'''.
=== Число четверной точности (''Binary128'', ''Quadruple precision'') ===
'''Число́ четверно́й то́чности''' —
компьютерный формат представления чисел, занимающий в памяти четыре машинных слова (в случае 32-битного компьютера — <tex>128 </tex> бит или <tex>16 </tex> байт). Используется в случае необходимости крайне высокой точности.
{|class="wikitable" style="border-collapse: collapse; border: none"
|colspan=66 style="border: none; border-right: 1px solid gray; text-align: right"|0
|}
Порядок записан со сдвигом '''<tex>-16383</tex>'''.
Обычно этот формат реализуется программно, случаи аппаратной реализации крайне редки. Также не гарантируется поддержка этого типа в языках программирования, хотя кое-где она и реализована (например, компилятор gcc для архитектуры x86 позволяет использовать тип __float128, являющийся программной реализацией числа с четверной точностью).
В совокупности эти факторы делают Quadruple весьма экзотичным и редко встречающимся форматом чисел с плавающей запятой.
=== Диапазон значений чисел с плавающей запятой ===
Диапазон чисел, которые можно записать данным способом, зависит от количества бит, отведённых для представления мантиссы и показателя. Пара значений показателя (когда все разряды нули и когда все разряды единицы) зарезервирована для обеспечения возможности представления специальных чисел. К ним относятся ноль, значения NaN (Not a Number, "не число", получается как результат операций типа деления нуля на ноль) и <tex>\pm\infty</tex>.
Данная таблица только лишь примерно указывает границы допустимых значений, без учета возрастающей погрешности с ростом абсолютного значения и существования [[#Денормализованные числа|денормализованных чисел]].
<!-- TODO: Выкинуть нафиг эту бессмысленную таблицу, переписать весь раздел, привести распределение значений и формулу для подсчета их количества -->
{| class="wikitable"
!Название в IEEE 754|| Название типа переменной в Си || Диапазон значений || Бит в мантиссе || Бит на переменную
|-
|Half precision||-||6,10×10<sup>-5</sup>..65504||11||16
|-
|Single presicion||float||-3,4×10<sup>38</sup>..3,4×10<sup>38</sup>||23||32
|-
|Double precision||double||-1,7×10<sup>308</sup>..1,7×10<sup>308</sup>||53||64
|-
|Extended precision||На некоторых архитектурах (например в сопроцессоре Intel) long double||-3,4×10<sup>4932</sup>..3,4×10<sup>4932||65||80
|}
== Особые значения чисел с плавающей точкой ==
=== Ноль (со знаком) ===
Как уже было оговорено выше, в нормализованной форме числа с плавающей точкой невозможно представить ноль. Поэтому для его представления зарезервированы специальные значения мантиссы и порядка. Число {{---}} число считается нулевымнулём, если все его биты порядка равны нулю и все биты мантиссы , кроме знакового, равны нулю. При этом в зависимости от значения одного бита знака ноль может быть быть как положительным, так и отрицательным.
{|class="wikitable" style="border-collapse: collapse; border: none"
|colspan=5 style="border: none; border-right: 1px solid gray; text-align: right"|0
|}
'''Арифметика нуля со знаком'''
* <tex>\frac{\left|x\right|}{-0} = -\infty\,\!</tex> (если <tex>x\ne0</tex>)
=== Неопределенность (''NaN'') ===
'''NaN''' {{- --}} это аббревиатура от фразы "''not a number''". Специальное представлениеNaN является результатом арифметических операций, этакое псевдочисло, придуманное для того, чтобы арифметическая операция могла всегда вернуть какое-то не бессмысленное значениеесли во время их выполнения произошла ошибка (примеры см. ниже). В IEEE 754 NaN представлен как число, в котором все двоичные разряды порядка {{--- }} единицы, а мантисса не нулевая.
{|class="wikitable" style="border-collapse: collapse; border: none"
* <tex>0\times\infty= NaN</tex>
* <tex>\frac{\pm0}{\pm0}=NaN</tex> * <tex>\frac{\pm\infty}{\pm\infty} = NaN</tex>
* <tex>\sqrt{x} = NaN</tex>, где <tex>x<0</tex>
=== Бесконечности ===
В число с плавающей запятой можно записать значение <tex>+\infty</tex> или <tex>-\infty</tex>. Как и нули со знаком, бесконечности позволяют получить хотя бы близкий к правильному результат вычисления в случае переполнения. Согласно стандарту IEEE 754 число с плавающей запятой считается равным бесконечности, если все двоичные разряды его порядка {{- --}} единицы, а мантисса равна нулю. Знак бесконечности определяется знаковым битом числа.
{|class="wikitable" style="border-collapse: collapse; border: none"
|}
Получить бесконечность можно при переполнении и при делении ненулевого числа на ноль. Бесконечность при делении разработчики определили исходя из существования пределов, когда делимое и делитель стремиться к какому-то числу. Соответственно, При этом <texdpi = "180">\frac{cx}{0}=\pm\infty</tex> (например, <tex>=\frac{7}begin{0cases}=+\infty</tex>, а <tex>&\fractext{-7если $x>0$;}\\NaN,&\text{если $x=0$;}=\\-\infty</tex>), так как &\text{если делимое стремиться к константе, а делитель к нулю, предел равен бесконечности. При $x<tex>\frac{0$.}\end{0cases}</tex> предел не существует, поэтому результатом будет NaN.
</tex>
== Диапазон значений чисел = Денормализованные числа ==='''Денормализованные числа''' (англ. ''denormalized/subnormal numbers'') - это способ увеличить количество представимых числом с плавающей запятой ==Диапазон чиселзначений около нуля, которые можно записать данным способом, зависит от количества бит, отведённых для представления мантиссы и показателядабы повысить точность вычислений. Пара значений показателя Каждое значение денормализованного числа меньше самого маленького '''нормализованного''' (когда все разряды нули и когда все разряды единицы"обычного") зарезервирована для обеспечения возможности представления специальных чиселзначения числа с плавающей запятой. К ним относятся нольСогласно стандарту, значения NaN если порядок равен своему минимальному значению (Not a Number, "не число"все его биты {{---}} нули, получается как результат операций типа деления нуля на нольа истинное значение порядка равно его сдвигу) и все биты мантиссы равны нулю, то это <tex>\pm\inftypm0</tex>. Если же мантисса не равна нулю, то это число с порядком, на единицу большим минимального (все биты порядка, кроме младшего {{---}} нули) и данной мантиссой, '''целая часть которой считается равной нулю, а не единице'''.
То есть число с плавающей запятой, при учете вышесказанного, можно задать следующим образом:<br/>* <!-tex>(- TODO: Выкинуть нафиг эту бессмысленную таблицу1)^s\times1, переписать весь разделM\times2^E</tex>, привести распределение значений и формулу для подсчета их количества --если <tex>E_{min} \le E \le E_{max}</tex>(''нормализованное число'')
* <centertex>(-1)^s\times0,M\times2^{E_{min}}</tex>, если <tex>E=E_{min}-1</tex> (''денормализованное число'')
Где <table border=tex>s</tex> {{---}} бит знака, <tex>M</tex> {{---}} последовательность битов мантиссы, <tex>E</tex> {{---}} значение порядка (с учетом сдвига), <tex>E_{min}</tex> {{---}} минимальное значение порядка, используемое для записи чисел (1 {{---}} ''сдвиг'') , <tex>E_{min}-1 CellSpacing="</tex> {{---}} минимальное значение порядка, которое он в принципе может принять (все биты нули, 0" CellPadding="2">{{---}} ''сдвиг'').
Хоть денормализованные числа и позволяют бороться с погрешностями и обрабатывать очень маленькие значения, за эти возможности приходится дорого платить. Ввиду сложности денормализованные числа крайне редко реализуют на аппаратном уровне - вместо этого используются программные реализации, работающие значительно медленнее. <tr><th>Название (IEEE 754)</th><th>Тип (C)</th><th>Диапазон</th><th>Биты мантиссы</th><th>Биты</th><br/tr>
В современных процессорах обработка денормализованных чисел происходит в десятки раз медленнее, чем обработка нормализованных чисел. Ниже приведена часть таблицы из статьи Isaac Dooley, Laxmikant Kale "Quantifying the Interference Caused by Subnormal Floating-Point Values"<tr><tdref>Half precision<[http:/td><td>Нет</td><td>6,10×10<sup>-5</sup>charm.cs.uiuc.65504<edu/td><td>10+1<papers/td><td>16</td>SubnormalOSIHPA06.pdf Статья Isaac Dooley, Laxmikant Kale "Quantifying the Interference Caused by Subnormal Floating-Point Values" ''(англ.)'']</trref>
== Действия с числами с плавающей запятой ==
=== Умножение и деление ===
Самыми простыми для восприятия арифметическими операциями над числами с плавающей запятой являются умножение и деление. Для того, чтобы умножить два вещественных числа в нормализованной форме необходимо перемножить их мантиссы, сложить порядки, округлить и нормализовать полученное число.
<!--
Пример:
e=<tex>3</tex>; m= Денормализованные <tex>4.734612</tex> (порядок и мантисса первого числа ) × e=<tex>5</tex>; m='''Денормализованные <tex>5.417242</tex> (порядок и мантисса второго числа''' (''denormalized\subnormal numbers'') ----- это способ увеличить количество представимых числом с плавающей запятой значений около нуля, дабы повысить точность вычислений------------------ e=<tex>8</tex>; m=<tex>25. Каждое значение денормализованного числа меньше самого маленького '''нормализованного''' 648538980104</tex> ("обычного"произведение как оно есть) значения числа с плавающей запятой e=<tex>8</tex>; m=<tex>25.Согласно стандарту, если порядок равен своему минимальному значению 64854</tex> (все его биты - нули, а порядок формально равен своему сдвигумантисса после округления) и все биты мантиссы равны нулю, то это e=<tex>\pm09</tex>; m=<tex>2. Если же мантисса не равна нулю, то это число с порядком, на единицу большим минимального 564854</tex> (все биты порядка, кроме младшего нормализованная форма)-- нули) и данной мантиссой, целая часть которой считается равной нулю, а не единице.>
Итак, первое число в машинном 32-разрядном представлении с плавающей точкой будет иметь вид:
<tex>1</tex><strong>10000111</strong><tex>00001101001110000000000</tex> (жирным шрифтом выделен порядок числа, длина мантиссы {{---}} 23 бита).
Итак в машинном 32-разрядном представлении второе число будет иметь вид:
Результат наших вычислений верен, так как <tex>405{,}875</tex> - <tex>269{,}21875</tex> <tex>=</tex> <tex>136{,}65625</tex>.
=== Алгоритм получения представления вещественного числа в памяти ЭВМ ===
памяти ЭВМ на примере величины типа Double.</P>
<P>Как видно из таблицы, величина это этого типа занимает в памяти <tex>8 </tex> байт. На
рисунке ниже показано, как здесь представлены поля мантиссы и порядка (нумерация битов осуществляется справа налево):</P>
<P>Можно заметить, что старший бит, отведенный под мантиссу, имеет номер
<tex>51</tex>, т.е. мантисса занимает младшие <tex>52 </tex> бита. Черта указывает здесь на
положение двоичной запятой. Перед запятой должен стоять бит целой части
мантиссы, но поскольку она всегда равна <tex>1</tex>, здесь данный бит не требуется и
соответствующий разряд отсутствует в памяти (но он подразумевается).
смещение. Смещение выбирается так, чтобы минимальному значению порядка
соответствовал нуль. Например, для типа Double порядок занимает <tex>11 </tex> бит и
имеет диапазон от <tex>2</tex><sup><tex>-1023</tex></sup> до <tex>2</tex><sup><tex>1023</tex></sup>, поэтому смещение равно <tex>1023</tex><sub>(<tex>10</tex>)</sub> <tex> = </tex>
<tex>1111111111</tex><sub>(<tex>2</tex>)</sub>. Наконец, бит с номером <tex>63 </tex> указывает на знак числа.</P>
<P>Таким образом, из вышесказанного вытекает следующий <strong>алгоритм</strong> для
<LI>перевести модуль данного числа в двоичную систему счисления;</LI>
<LI>нормализовать двоичное число, т.е. записать в виде <I>M</I> &<tex> \times; </tex>2<I><sup>p</sup></I>, где <I>M</I> —
мантисса (ее целая часть равна <tex>1</tex><sub>(<tex>2</tex>)</sub>) и <I>p</I> — порядок, записанный в
десятичной системе счисления;</LI>
</OL>
<P><B>Пример.</B> Запишем код числа <tex>-312</tex>,<tex>3125</tex>.</P>
<OL>
<LI>Двоичная запись модуля этого числа имеет вид <tex>100111000{,}0101</tex>.</LI>
<LI>Имеем <tex>100111000{,}0101 </tex> <tex>= </tex>
<tex>1{,}001110000101 &</tex><tex>\times; </tex><tex>2</tex><sup><tex>8</tex></sup>.</LI>
<LI>Получаем смещенный порядок <tex>8 </tex> <tex>+ </tex> <tex>1023 </tex> <tex>= </tex> <tex>1031</tex>. Далее имеем
<tex>1031</tex><sub>(<tex>10</tex>)</sub> <tex> = </tex> <tex>10000000111</tex><sub>(<tex>2</tex>)</sub>.</LI>
<LI>Окончательно
</LI>
<P><B>Пример.</B> Пусть дан код 3FEC600000000000<sub>(16)</sub> или
<centerOL>
</tableLI>Прежде всего замечаем, что это код положительного числа, поскольку в
разряде с номером <tex>63</centertex>записан нуль. Получим порядок этого числа:
<OLtex>01111111110</tex><sub>(<tex>2</tex>)</sub> <tex>=</tex> <tex>1022</tex><sub>(<tex>10</tex>)</sub>; <tex>1022</tex> <tex>-</tex> <tex>1023</tex> <tex>=</tex> <tex>-1</tex>.</LI>
<LI>Прежде всего замечаемЧисло имеет вид <tex>1</tex>, что это код положительного числа, поскольку в <tex>1100011</tex><tex> \times </tex><tex>2</tex><sup><tex>-1</tex></sup> или
== Примечания ==<references/OL>
== Ссылки ==
=== Использованные материалы ===
'''На русском'''
* [http://ru.wikipedia.org/wiki/%D0%AD%D0%BA%D1%81%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D1%8C Википедия {{- --}} Экспоненциальная запись]* [http://ru.wikipedia.org/wiki/%D0%A7%D0%B8%D1%81%D0%BB%D0%BE_%D1%81_%D0%BF%D0%BB%D0%B0%D0%B2%D0%B0%D1%8E%D1%89%D0%B5%D0%B9_%D0%B7%D0%B0%D0%BF%D1%8F%D1%82%D0%BE%D0%B9 Википедия {{--- }} Число с плавающей запятой]* [http://ru.wikipedia.org/wiki/%D0%9E%D1%82%D1%80%D0%B8%D1%86%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%B8_%D0%BF%D0%BE%D0%BB%D0%BE%D0%B6%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BD%D0%BE%D0%BB%D1%8C Википедия {{--- }} Отрицательный и положительный ноль]*[http://habrahabr.ru/blogs/cpp/112953/ Хабрахабр {{--- }} статья пользователя Yruslan "Что нужно знать про арифметику с плавающей запятой"]*[http://www.sgu.ru/prcnit/teach/3.php Статья Лапшевой Е.Е. "Машинная арифметика с вещественными числами"] <span style="color: red">Статья удалена</span>
'''На английском'''
*[http://en.wikipedia.org/wiki/NaN Wikipedia {{- --}} NaN]*[http://en.wikipedia.org/wiki/Floating_point Wikipedia {{--- }} Floating point]*[http://en.wikipedia.org/wiki/IEEE_754-2008 Wikipedia {{--- }} IEEE 754-2008]
=== Что стоит прочесть ===
* [http://grouper.ieee.org/groups/754 Материалы по стандарту IEEE 754 ''(англ.)'']
* [http://softelectro.ru/ieee754.html Русский перевод стандарта IEEE 754]
[[Категория: Дискретная математика и алгоритмы]]
[[Категория: Представление информации]]