Представление в ЭВМ дробных чисел



Дробные числа (в информатике их чаще называют либо действительными, либо вещественными) - это такие числа, в машинном представлении которых может присутствовать дробная часть.

 Перевод дробных чисел из двоичной системы в десятичную

Проблемы перевода будем рассматривать только для дробных частей чисел.

Любая двоичная дробь имеет десятичный эквивалент, т. е. точно переводится в десятичную систему.

Действительно, двоичную дробь можно представить в виде:

(A)2=a-12-1+a-22-2+…=a-1/21+…+a-m/2m

 

Здесь ai - одна из цифр двоичной системы (0 или 1).

Приведем сумму к общему знаменателю 2m и умножим числитель и знаменатель на 5m. Получим

(a-12m-1+a-22m-2+…+a-m)/2m*5m/5m=

(a-12m-1+a-22m-2+…+a-m)*5m/10m

а это и есть десятичная дробь, поскольку в знаменателе стоит степень десятки.

 Перевод дробных чисел из десятичной системы в двоичную

В общем случае десятичная дробь не имеет двоичный эквивалент, т. е. точно не переводится в двоичную систему.

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

Эксперимент Вычислим в Excel набор значений функции   для х от -4 до 4 с шагом -0,2. · Открыть книгу Excel. · В ячейку А1 записать число -4 —> в ячейку А2 записать число -3,8 —> выделить диапазон А1:А2 —> установить курсор мыши на маркер заполнения —> протянуть курсор до ячейки А41. · В ячейку В1 записать формулу "=(16-A1^2)^(1/2)" —> скопировать формулу в ячейки В1:В41. Видим, что в ячейке В41 вместо ожидаемого нуля стоит сообщение об ошибке. Щелкнув мышью в ячейке А41, в строке формул вместо ожидаемого значения 4 увидим 4,00000000000001 (!!!). Просто при последовательном прибавлении неточно переведенной в двоичную систему величины 0,2 набежала ошибка. Она уже заметна при значении х=1,8, ноне играла особой роли, пока не пришлось извлекать квадратный корень. И как быть? Можно, например, в ячейке А41 удалить 4 и записать 4. Вновь записанное значение будет уже точным, и ошибки извлечения корня не будет. Впрочем, с самого начала для заполнения диапазона А2:А41 можно было использовать прогрессию: выделить ячейку А1 —> установить курсор мыши на маркер заполнения —> нажать правую кнопку мыши —> протянуть курсор до ячейки А41 —> Прогрессия —> Тип: арифметическая —> шаг: 0,2 —> [ОК]. Надо полагать, что в приведенных двух вариантах реализованы разные механизмы вычисления очередного значения, что лишний раз напоминает о необходимости проявлять бдительность при выполнении расчетов с дробными числами.  

 

Представление дробных чисел в форме с фиксированной запятой

 

Эта форма предполагает строгую фиксацию запятой в определенном месте разрядной сетки числа.

 

 

Недостатком является потребность в большом количестве разрядов как для представления очень больших чисел, так и для представления очень малых чисел. Тем не менее она может найти применение в специализированных ЭВМ, в которых диапазон обрабатываемых чисел ограничен.

 Представление дробных чисел в форме с плавающей запятой

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

 

Aq = mqp =(p, m)q ,

 

где

q - основание системы счисления;

p - порядок;

m - мантисса.

Например, А=3,1415927. Вот варианты полулогарифмической формы:

(0,031415927×102)10 = (2; 0,031415927)10,

(3141,5927×10-3)10 = (-3; 3141,5927)10

и т. д. Видим, что для каждого числа существует бесконечное количество вариантов полулогарифмической формы.

Число называется нормализованным, если

т. е. 1) мантисса по абсолютному значению не превосходит 1 (это второе неравенство);

2) первая цифра мантиссы после запятой не равна нулю (это первое неравенство).

В нашем примере нормализованная форма числа А=0,31415927×101 = (1; 0,31425927).

Вот вариант представления нормализованного числа в ЭВМ:

 

 

Запятая не фиксирована в определенном месте разрядной сетки, т. е. как бы плавает, отчего такой способ представления получил название "форма с плавающей запятой".

Попробуем на конкретном примере оценить возможный диапазон представления чисел в форме с плавающей запятой.

Пусть длина числа - 4 байта (32 бита), в том числе:

- знак - 1 бит;

- порядок со знаком - 8 бит;

- мантисса - 23 бита.

Максимальная мантисса = 2-1+ 2-2+ ...+ 2-23 = 1- 2-23 (во всех битах 1, сумма подсчитана по формуле для арифметической прогрессии).

Максимальный порядок = 27=127 (т. к. из 8-ми бит порядка один бит- знак).

Следовательно, максимальное равно

 

(1- 2-23)´2127 @ 1,7´1038 .

 

Сомневающиеся могут запустить Калькулятор и выполнить вычисления.

Заглянув в справочники, для четырехбайтовых действительных увидим максимальное примерно равно 3,4´1038 .


Дата добавления: 2018-04-15; просмотров: 743; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!