Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Цифровое представление вещественных чисел




Для того, чтобы представить вещественное число в виде набора целых чисел, его необходимо привести к нормализованной форме:

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-стандарту

Тип Размер, бит

Диапазон изменения чисел

максимум    минимум

Точность десятичн. цифр Машинное e
single 32 3.4*10-38 3.4*1038 6 1,192*10-7
double 64 1.7*10-308 1.7*10308 15 2,221*10-16
long double 80 3.4*10-4932 3.4*104932 19 1,084*10-19

Источник: [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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...