Нормалізована запис дійсних чисел

Подання дійсних чисел в ЕОМ визначається особливостями конструкції ЕОМ і програмного забезпечення.

Нпрімер, для 32 розрядного (4 байтового) числа можливий наступний спосіб представлення:

Нормалізована запис дійсних чисел

В ході обчислень постійно проводиться нормалізація проміжних і кінцевих значень: зсув мантиси вправо і вліво з одночасним зміною порядку. При зрушеннях можуть губитися значущі цифри мантиси, тобто зростати обчислювальна похибка.

Про переповненні при операціях з речовими змінними:

Мантиса не може переповниться. відбудеться нормалізація.

Порядок може переповниться.

Наприклад, для схеми уявлення дійсного числа, наведеної вище маємо:

Точність обробки дійсних чисел залежить ль форми їх подання:

Точність - кількість значущих цифр у мантиси

Підвищення точності обчислень вимагає великих ресурсів комп'ютера, збільшує час обчислень.

Один з аспектів оптимізації алгоритмів і програм їх реалізації: компроміс між точністю обчислень і витратами ресурсів ЕОМ (часу).

Чим більше розрядів відводиться під запис мантиси, тим вище точність представлення чисел.
Чим більше розрядів займає порядок, тим більш широкий діапазон чисел від машинного нуля до найбільшого числа.

Речовий формат з m - розрядної мантиссой дає можливість абсолютно точно уявити m - розрядне ціле число. тобто будь-який двоичное ціле число, що складається не більше, ніж з m розрядів, може бути без спотворень представлено в матеріальному форматі (вузли сітки).

Ілюструє приклад-експеримент №1.

Розглянемо вираз: R = N * 1 / N # 9472; 1.
1.В математики R = 0 для будь-якого N.

2. При програмуванні. Подивимося, що буде, якщо запрограмувати цей вислів:

Якщо задати N - довільне дійсного типу,
то отримаємо R ≠ 0, (R≈10 -11 якщо R було описано як real).
Якщо задати N = 2 m. де m<=8, то получим R=0 – точный результат.

Ілюструє приклад-експеримент №2.

1. У математиці: 0,1 + 0,1 + 0,1 + 0,1 + 0,1 + 0,1 + 0,1 + 0,1 + 0,1 + 0,1 = 1

2. При програмуванні:

R: = 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1; отримаємо R≈1

Підсумовуючи таким чином, одиницю не отримаємо.