Помощничек
Главная | Обратная связь

...

Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Числа с плавающей запятой



.

 

В форме с плавающей запятой число представляется двумя компонентами : мантиссой и порядком. Мантисса используется для записи цифр числа, а порядок - для указания положения запятой.

Разрядная сетка машины в этом случае делится на несколько частей:

один разряд - для кодирования знака числа (это всегда самый старший, левый, разряд слова);

M разрядов - для записи мантиссы;

Р разрядов - для записи порядка (с учетом его знака).

Местоположение запятой при этом тоже строго фиксируется: считается, что мантисса всегда представляется как число, меньшее единицы, но такое, в котором первая цифра после запятой для всех абсолютно чисел отлична от нуля (единственное исключение составляет число 0). Такая форма представления мантиссы называется нормализованной. Иначе говорят, что мантисса нормализована (приведена к виду: 1 < M <= 0,1).

Ну, а если известно, что мантисса имеет вид “0,цццц..”, то ее код в машинном слове может не содержать символов “0,”, а местоположение запятой предполагается перед старшей значащей цифрой мантиссы.

Порядок Р всегда представляется целым числом со знаком + или -. А для кодирования абсолютной величины порядка остается (Р-1) цифр.

Теперь можно рассмотреть диапазон представимых чисел.

Вначале рассмотрим пример применительно к двоичной системе счисления.

Пусть m - количество разрядов мантиссы,

р - количество разрядов порядка, включая знаковый.

Тогда максимальное по абсолютной величине число будет равно

0,1111..1 * 2**(+111..1) = (1-2**(-м))*2**(2**(р-1)-1),

m цифр (p-1) цифр

или приблизительно 2**(2**(р-1)-1),

а минимальное по абсолютной величине число

0,1000..0 * 2**(-111..1) = 2**(-2**(р-1)).

m цифр (p-1) цифр

Итак, число в форме с плавающей запятой представляется последовательностью битов без каких либо явно указанных разделителей, но функционально разбитой на три группы {(знак числа, мантисса числа, порядок числа) или (знак числа, порядок числа, мантисса числа)}.

Рассмотренная форма кодирования числа приводит к следующим последствиям:

· Диапазон чисел, представимых в форме с плавающей запятой, определяется главным образом разрядностью порядка (Р).

· Разрядность мантиссы (М) определяет точное количество значащих цифр в изображении числа.

Следовательно, большинство чисел в форме с плавающей запятой представляется приближенно и причиной этого является ограниченное число разрядов мантиссы. Величина же абсолютной погрешности при приближенном представлении числа зависит как от абсолютной величины числа, так и от разрядности мантиссы и порядка.

Рассмотрим примеры. При этом для простоты положим, что числа представляются в десятичной системе счисления, количество цифр мантиссы равно 4, количество цифр порядка - 2, знак порядка записывается как в математике, а знак числа мы не изображаем, полагая все числа положительными.

Пример 1. Пусть имеется число 12,42=0,1242*10**(+2).

В заданном формате оно представляется цепочкой символов

1 2 4 2 + 0 2

При этом

· цепочка “1 2 4 2” представляет мантиссу, т.е. в математическом смысле число 0,1242 ,

· а цепочка “+ 0 2” - порядок - целое положительное число 2.

Тогда ближайшее большее этого число может быть задано цепочкой

1 2 4 3 + 0 2

и оно равно 0,1243*10**(+2)= 12,43.

Таким образом, ближайшие числа на числовой оси, которые различимы при кодировании их в форме с плавающей запятой для данного примера различаются на 0,01 (абсолютная погрешность представления всех чисел между 12,42 и 12,43 имеет верхнюю оценку 0,01).

Пример 2. Пусть имеется число 0,001242=0,1242*10**(-2).

В заданном формате оно представляется цепочкой символов

1 2 4 2 - 0 2,

а ближайшее большее этого число представляется цепочкой

1 2 4 3 - 0 2

и равно 0,1243*10**(-2)= 0,001243.

Таким образом, абсолютная погрешность представления всех чисел между 0,001242 и 0,001243 имеет верхнюю оценку 0,000001.

Пример 3. Пусть имеется число 0,1242*10**(+12).

В естественной форме записи это число 124 200 000 000, а в заданном формате оно представляется цепочкой символов

1 2 4 2 + 1 2,

а ближайшее большее этого число представляется цепочкой

1 2 4 3 + 1 2

и равно 0,1243*10**(+12)= 124 300 000 000.

Таким образом, абсолютная погрешность представления всех чисел между 124 200 000 000 и 124 300 000 000 имеет верхнюю оценку 100 000 000 = 10**8.

Обратите внимание, что в последнем примере невозможно записать ни одного числа в интервале размером 10**8.

Важный вывод, который следует из анализа формы кодирования чисел с плавающей запятой и иллюстрируется в рассмотренных примерах: числа в форме с плавающей запятой, несмотря на то что, эта форма предложена для представления в ЭВМ непрерывных величин, представляются дискретным множеством на числовой оси и располагаются на ней неравномерно.

Если изобразить на (бесконечной) числовой оси области существования чисел, то можно выделить следующие области (см. рис.):

1 2 3 4 5 6

R

МаксВещ -МинВещ 0 +МинВещ +МаксВещ

· область 1: Х<-МаксВещ - ни одного значения из области нельзя представить в машинном слове (МаксВещ - максимальное по абсолютной величине число, которое можно закодировать);

· область 2: -МаксВещ<=X<=-МинВещ - в данном интервале может быть представлено столько различных чисел, сколько их можно записать по заданной разрядности мантиссы и порядка;

· область 3: -МинВещ<X<0 - ни одного значения из этой области представить в машинном слове нельзя;

· область 4: 0<X<+МинВещ - ни одного значения из этой области представить в машинном слове нельзя;

· область 5: +МинВещ>=X>=+МаксВещ - в данном интервале может быть представлено столько различных чисел, сколько их можно записать по заданной разрядности мантиссы и порядка;

· область 6: X>+МаксВещ - ни одного значения из области нельзя представить в машинном слове (МаксВещ - максимальное по абсолютной величине число, которое можно закодировать).

Особое место занимает величина 0. Она также кодируется в форме с плавающей запятой, причем как ее порядок, так и мантисса(!) полагаются равными нулю.

.



©2015 studopedya.ru Все права принадлежат авторам размещенных материалов.