Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры КИТ Вишняков.doc
Скачиваний:
81
Добавлен:
13.02.2016
Размер:
556.03 Кб
Скачать

13.Представление в эвм дробных чисел

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

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

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

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

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

(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 —>   [ОК].

Надо полагать, что в приведенных двух вариантах реализованы разные механизмы вычисления очередного значения, что лишний раз напоминает о необходимости проявлять бдительность при выполнении расчетов с дробными числами.

 

 

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

 

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

 

 

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