Цифровое представление вещественных чисел
Для того, чтобы представить вещественное число в виде набора целых чисел, его необходимо привести к нормализованной форме: x = M*2P; где M - называется мантиссой (дробной частью), а P - экспонентой (порядком). После этого мантисса и порядок переводятся в двоичное представление. В памяти ЭВМ вещественное число хранится в виде:
здесь S – признак знака. Поэтому необходимо также определить, какой размер памяти будет отведён под все три части нормализованного числа. Далее должны быть определены правила (алгоритмы), по которым будут выполняться арифметические операции с нормализованными вещественными числами. Совокупность таких алгоритмов, а также правил представления чисел в нормализованной форме называется арифметикой плавающих чисел [floating point number]. Поскольку размер памяти, отводимый под мантиссу и порядок, ограничен, то вещественные числа представляются с некоторой погрешностью (точность десятичных цифр) и имеют ограниченный диапазон изменения. Чем больше размер памяти для плавающего числа, тем точнее можно представить вещественное число. Поэтому для пользователя основными характеристиками арифметики плавающего числа являются длина числа (размер), измеряемая в битах, и точность представления числа. По точности представления вещественных чисел различают плавающие числа одинарной и двойной точности [single and double precision]. Пример Рассмотрим принцип цифрового представления вещественного числа 15,375. Пусть под мантиссу отведено 5 десятичных разрядов, а под порядок – 2 разряда. Представим число в нормализованной форме: 15,375» 1,9219*23. Так как в нормализованной форме первая цифра всегда равна единице, то её можно не хранить. Тогда число будет представлено в виде целого числа 9219003 с относительной погрешностью не более 10-4, то есть число верных десятичных чисел равно 4. В памяти ЭВМ это число будет храниться в двоичной форме, причём можно легко подсчитать, что для хранения такого числа потребуется 27 бит. Максимальное число, которое можно представить таким образом - 9999999=1,99999*1099, а минимальное, не равное нулю - 0000100=0,00001. Если предусмотреть один бит для хранения знака порядка, то минимально представляемое число будет равно 00001-99, то есть 0,00001*10-99.
При попытке выйти за допустимый диапазон ЭВМ выдаст сообщение о переполнении (underflow или overflow). Конкретные характеристики арифметики различны для разных стандартов. Для ПЭВМ наиболее распространённым является IEEE-стандарт (IEEE-754-1985) [Institute of Electrical and Electronic Engineers], согласно которому вещественные числа представляются в трёх основных формах (см. табл. 1.2). Таблица 2. Данные с плавающей точкой по IEEE-стандарту
Источник: [5]. Здесь нужно заметить, что характеристики плавающего числа двойной точности будут зависеть от той арифметики, которая используется на конкретной ЭВМ. Пример Запишем число 15,375 в двоичном виде: 15.375 = 1111.0112 1.111011*2112 Тогда согласно стандарту IEEE число будет представляться: single 15,375 = 0 1000.0001.0 111.0110.0000.0000.0000.00002 = 4176000016 long double 15,375 = 0 1000.0000.00010. 1110.1100.0000.0000. … 00002 = 402ЕС0000000000016. Источник: [5]. Особенности плавающей арифметики могут существенно влиять на результаты расчётов, вплоть до того, что погрешность может сделать невозможным получение какого-либо результата вообще, поэтому знание деталей реализации арифметики плавающих чисел является необходимым для программистов. Пример
Существует особая характеристика плавающей арифметики – машинное эпсилон. Это число, которое определяется как . Для плавающего числа единичной точности (по IEEE стандарту): . Это значит, если написать программу на языке BASIC: a=1.2 b=1.e-7 print a+b
то результат, который выдаст программа, будет равен 1.2. Поэтому программы, учитывающие особенности плавающей арифметики могут трактовать все числа, меньшие, чем машинное эпсилон, практически равными нулю.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|