Изменения

Перейти к: навигация, поиск

Представление вещественных чисел

733 байта убрано, 01:43, 19 октября 2011
Подправил разноцветные таблицы
Вещественные числа обычно представляются в виде чисел с плавающей запятой. Числа с плавающей запятой — один из возможных способов предсталения действительных чисел, который является компромиссом между точностью и диапазоном принимаемых значений, его можно считать аналогом экспоненциальной записи чисел, но только в памяти компьютера.
Число с плавающей запятой состоит из набора отдельных двоичных разрядов, условно разделенных на так называемые знак, порядок и мантиссу. В наиболее распространённом формате (стандарт IEEE 754) число с плавающей запятой представляется в виде набора битов, часть из которых кодирует собой мантиссу числа, другая часть — показатель степени, и ещё один бит используется для указания знака числа, 0 - если число положительное, 1 - если число отрицательное. Вот пример такого числа из 16 двоичных разрядов:{|class="wikitable" style="border-collapse: collapse; border: none"
|-
!colspan=5 style="background-color: powderblue; border: thin solid black; border-bottom: none"|Знак
!style="background-color: lightcoral; border: thin solid black"|0
|-
|style="border: none"| |colspan=3 2 style="border: none; border-left: 1px solid gray; text-align: left"|1514
|colspan=3 style="border: none; border-right: 1px solid gray; text-align: right"|10
|colspan=5 style="border: none; border-left: 1px solid gray; text-align: left"|9
'''Плавающая запятая''' — форма представления дробных чисел, в которой число хранится в форме мантиссы и показателя степени.
}}
При этом лишь некоторые из вещественных чисел могут быть представлены в памяти компьютера точным значением, в то время как остальные числа представляются приближёнными значениями.Попробуйте, скажем, перевести число <tex>0.2</tex> в двоичную систему счисления - получится бесконечная запись <tex>0,(0011)</tex>
В наиболее распространённом формате число с плавающей запятой представляется в виде последовательности битов, часть из которых кодирует собой мантиссу числа, другая часть — показатель степени, и ещё один бит используется для указания знака числа, 0 - если число положительное, 1 - если число отрицательное.
=== Нормальная форма и нормализованная форма ===
'''Нормальной формой''' числа с плавающей запятой называется такая форма, в которой мантисса (без учёта знака) в десятичной системе находится на полуинтервале [0; 1). Такая форма записи имеет недостаток: некоторые числа записываются неоднозначно (например, 0,0001 можно записать в 4 формах — 0,0001×10<sup>0</sup>, 0,001×10<sup>−1</sup>, 0,01×10<sup>−2</sup>, 0,1×10<sup>−3</sup>), поэтому распространена также другая форма записи — '''нормализованная''', в которой мантисса десятичного числа принимает значения от 1 (включительно) до 10 (не включительно), а мантисса двоичного числа принимает значения от 1 (включительно) до 2 (не включительно). То есть в мантиссе слева от запятой до применения порядка находится ровно один знак. В такой форме любое число (кроме 0) записывается единственным образом. Ноль же представить таким образом невозможно, поэтому стандарт предусматривает специальную последовательность битов для задания числа 0 (а заодно и некоторых других полезных чисел, таких как <tex>-\infty</tex> и <tex>+\infty</tex>).
Так как старший двоичный разряд (целая часть) мантиссы двоичного числа в нормализованном виде всегда равен «1», то его можно не записывать, сэкономив таким образом один бит, что и используется в стандарте IEEE 754. В позиционных системах счисления с основанием большим, чем 2 (в троичной, четверичной и др.), этого замечательного свойства нет(ведь целая часть там может быть не только единицей).{|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"|Экспо-<br />нентаПорядок
!colspan=11 style="background-color: lightcoral; border: thin solid black"|Мантисса
|-style="text-align: right"
!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
!style="background-color: lightcoral; border: thin solid black"|0
|-
|style="border: none"| |colspan=3 2 style="border: none; border-left: 1px solid gray; text-align: left"|1514
|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
|-
!style="background-color: powderblue; border: thin solid black; border-top: none"|
!colspan=5 style="background-color: lightgreen; border: thin solid black"|Экспо-<br />нентаПорядок
!colspan=10 style="background-color: lightcoral; border: thin solid black"|Мантисса
|-style="text-align: right"
!style="background-color: lightcoral; border: thin solid black"|0
|-
|style="border: none"| |colspan=4 3 style="border: none; border-left: 1px solid gray; text-align: left"|1514|colspan=4 2 style="border: none; border-right: 1px solid gray; text-align: right"|810|colspan=4 6 style="border: none; border-left: 1px solid gray; text-align: left"|79
|colspan=4 style="border: none; border-right: 1px solid gray; text-align: right"|0
|}
|-
!style="background-color: powderblue; border: thin solid black; border-top: none"|
!colspan=8 style="background-color: lightgreen; border: thin solid black"|ЭкспонентаПорядок (8 бит)!colspan=23 style="background-color: lightcoral; border: thin solid black"|Мантисса(24 бита)
|-style="text-align: right"
!style="background-color: powderblue; border: thin solid black"|0
!style="background-color: transparent; border: none"|
|-
|colspan=4 style="border: none; border-left: 1px solid gray; text-align: left"|31|colspan=4 style="border: none; border-right: 1px solid gray; text-align: right"|24|colspan=4 style="border: none; border-left: 1px solid gray; text-align: left"|2330|colspan=4 style="border: none; border-right: 1px solid gray; text-align: right"|1624|colspan=4 20 style="border: none; border-left: 1px solid gray; text-align: left"|15|colspan=4 style="border: none; border-right: 1px solid gray; text-align: right"|8|colspan=4 style="border: none; border-left: 1px solid gray; text-align: left"|723|colspan=4 3 style="border: none; border-right: 1px solid gray; text-align: right"|0
|}
|-
!style="background-color: powderblue; border: thin solid black; border-top: none"|
!colspan=11 style="background-color: lightgreen; border: thin solid black"|Порядок<br />(11 бит)<br />Экспонента!colspan=52 style="background-color: lightcoral; border: thin solid black"|(52 бита)Мантисса<br />Мантисса(52 бит)
|-style="text-align: right"
!style="background-color: powderblue; border: thin solid black"|0
!style="background-color: lightcoral; border: thin solid black"|0
|-
|colspan=4 style="border: none; border-left: 1px solid gray; text-align: left"|63|colspan=4 style="border: none; border-right: 1px solid gray; text-align: right"|56|colspan=4 style="border: none; border-left: 1px solid gray; text-align: left"|5562|colspan=4 7 style="border: none; border-right: 1px solid gray; text-align: right"|4852|colspan=4 style="border: none; border-left: 1px solid gray; text-align: left"|47|colspan=4 style="border: none; border-right: 1px solid gray; text-align: right"|40|colspan=4 style="border: none; border-left: 1px solid gray; text-align: left"|39|colspan=4 style="border: none; border-right: 1px solid gray; text-align: right"|32|colspan=4 style="border: none; border-left: 1px solid gray; text-align: left"|31|colspan=4 style="border: none; border-right: 1px solid gray; text-align: right"|24|colspan=4 style="border: none; border-left: 1px solid gray; text-align: left"|23|colspan=4 style="border: none; border-right: 1px solid gray; text-align: right"|16|colspan=4 style="border: none; border-left: 1px solid gray; text-align: left"|15|colspan=4 style="border: none; border-right: 1px solid gray; text-align: right"|8|colspan=4 48 style="border: none; border-left: 1px solid gray; text-align: left"|751|colspan=4 style="border: none; border-right: 1px solid gray; text-align: right"|0
|}
101
правка

Навигация