Международный стандарт представления чисел с плавающей точкой в ЭВМ
Материал из MachineLearning.
(→Числа с плавающей точкой) |
(→Введение) |
||
Строка 4: | Строка 4: | ||
От этого главным образом зависит точность вычислений,а также их скорость. | От этого главным образом зависит точность вычислений,а также их скорость. | ||
- | В этом отчёте будут рассматриваться те аспекты представления чисел в ЭВМ, которые важны пользователям, желающим активно работать с дробными величинами. Будет достаточно подробно рассмотрен наиболее часто используемый стандарт [http://ru.wikipedia.org/wiki/IEEE IEEE 754]. В заключение будут приведены способы доступа к основным параметрам представления дробных чисел в ряде языков программирования ([http://ru.wikipedia.org/wiki/Си_(язык_программирования) C],[http://ru.wikipedia.org/wiki/C%2B%2B C++],[http://ru.wikipedia.org/wiki/Fortran Fortran],[http://ru.wikipedia.org/wiki/Pascal Pascal]). | + | В этом отчёте будут рассматриваться те аспекты представления чисел в ЭВМ, которые важны пользователям, желающим активно работать с дробными величинами. Вначале будут введены общепринятые понятия для дальнейшего изложения материала. Будет достаточно подробно рассмотрен наиболее часто используемый стандарт [http://ru.wikipedia.org/wiki/IEEE IEEE 754]. В заключение будут приведены способы доступа к основным параметрам представления дробных чисел в ряде языков программирования ([http://ru.wikipedia.org/wiki/Си_(язык_программирования) C],[http://ru.wikipedia.org/wiki/C%2B%2B C++],[http://ru.wikipedia.org/wiki/Fortran Fortran],[http://ru.wikipedia.org/wiki/Pascal Pascal]). |
- | + | == Числа с плавающей точкой == | |
Числа с плавающей точкой - общепринятая форма представления дробных чисел в ЭВМ. | Числа с плавающей точкой - общепринятая форма представления дробных чисел в ЭВМ. | ||
- | + | Основными параметрами такой формы представления является основание степени <tex>\beta</tex> (''base'') и точность <tex>p</tex> (''precision''). | |
При этом всегда требуется, чтобы основание степени было целым чётным числом. | При этом всегда требуется, чтобы основание степени было целым чётным числом. | ||
Если <tex>$\beta=10$</tex> и <tex>$p=3$</tex>, то число 0.1 представляется в виде | Если <tex>$\beta=10$</tex> и <tex>$p=3$</tex>, то число 0.1 представляется в виде | ||
Строка 31: | Строка 31: | ||
Чаще всего такая ситуация возникает при попытке представить числа, имеющие слишком длинное или вообще бесконечное представление (пример с 0.1). | Чаще всего такая ситуация возникает при попытке представить числа, имеющие слишком длинное или вообще бесконечное представление (пример с 0.1). | ||
В этом случае нужное нам число лежит где-то между двумя числами с плавающей точкой и будет представляться одним из них. | В этом случае нужное нам число лежит где-то между двумя числами с плавающей точкой и будет представляться одним из них. | ||
- | Реже встречается попытка использовать числа, меньшие | + | Реже встречается попытка использовать числа, меньшие чем <tex>1.0\times\beta^{e_{min}}</tex>, или большие чем <tex>\beta.0\times\beta^{e_{max}}</tex>. |
- | Подробнее об | + | Подробнее об этих случаях речь пойдёт в разделе "Стандарт IEEE". |
+ | |||
+ | Введём ещё одну договорённость. | ||
+ | Пока что представление чисел с плавающей точкой неуникально. | ||
+ | Например, при <tex>$\beta=10$</tex> и <tex>$p=3$</tex> число 0.1 можно представить как <tex>0.01\times 10^{1}</tex> и как <tex>1.00\times 10^{-1}</tex>. | ||
+ | Представление числа, в старшей позиции которого стоит цифра, отличная от нуля <tex>\left(d_0\neq 0\right)</tex>, мы будем называть ''нормализованным''. | ||
+ | Использование нормализованных форм решает проблему неединственности представления чисел с плавающей точкой. | ||
+ | (Однако, при такой договорённости возникает интересный вопрос — как представлять 0?) | ||
== Стандарт IEEE == | == Стандарт IEEE == |
Версия 19:36, 18 октября 2008
Содержание |
Введение
Практически любой язык программирования даёт возможность использовать в вычислениях дробные числа. Когда дело касается программной реализации численных методов или любых других вычислений на ЭВМ, важным вопросом является внутреннее представление чисел, с которым приходится работать программисту. От этого главным образом зависит точность вычислений,а также их скорость.
В этом отчёте будут рассматриваться те аспекты представления чисел в ЭВМ, которые важны пользователям, желающим активно работать с дробными величинами. Вначале будут введены общепринятые понятия для дальнейшего изложения материала. Будет достаточно подробно рассмотрен наиболее часто используемый стандарт IEEE 754. В заключение будут приведены способы доступа к основным параметрам представления дробных чисел в ряде языков программирования (C,C++,Fortran,Pascal).
Числа с плавающей точкой
Числа с плавающей точкой - общепринятая форма представления дробных чисел в ЭВМ. Основными параметрами такой формы представления является основание степени (base) и точность (precision). При этом всегда требуется, чтобы основание степени было целым чётным числом. Если и , то число 0.1 представляется в виде . Однако, очевидно, что при определённых параметрах некоторые числа не удастся представить точно. Например, при и то же самое число 0.1 представляется приблизительно в виде (поскольку в бинарном представлении число 0.1 имеет бесконечный вид).
В общем случае при заданных параметрах запись вида представляет число
При этом называется мантиссой числа и состоит из позиций. В дальнейшем под числом с плавающей точкой мы будем понимать дробные числа точно представимые в смысле данной формы.
Существуют ещё два важных параметра — максимальный и минимальный показатели степени и . Таким образом, при фиксированных параметрах мы можем представить разных чисел с учётом знака.
Здесь возникает проблема - что делать с числами, не представимыми точно. Чаще всего такая ситуация возникает при попытке представить числа, имеющие слишком длинное или вообще бесконечное представление (пример с 0.1). В этом случае нужное нам число лежит где-то между двумя числами с плавающей точкой и будет представляться одним из них. Реже встречается попытка использовать числа, меньшие чем , или большие чем . Подробнее об этих случаях речь пойдёт в разделе "Стандарт IEEE".
Введём ещё одну договорённость. Пока что представление чисел с плавающей точкой неуникально. Например, при и число 0.1 можно представить как и как . Представление числа, в старшей позиции которого стоит цифра, отличная от нуля , мы будем называть нормализованным. Использование нормализованных форм решает проблему неединственности представления чисел с плавающей точкой. (Однако, при такой договорённости возникает интересный вопрос — как представлять 0?)
Стандарт IEEE
Рекомендации программисту
Заключение
Список литературы
- David Goldberg. What Every Computer Scientist Should Know About Floating-Point Arithmetic. ACM Computing Surveys, Vol. 23, No. 1 (March 1991), pages 5--48.