Для 10-тичной системы: 0.110<= M10<110
Для P- ичной системы: p-1<=Mp<1
Нормализованную форму записи чисел следует отличать от нормальной формы, принятой, на пример, в физике, где 1<M<10.
Примеры записи чисел в нормализованной форме:
Десятичная система: X10 = − 123410 = − 0,1234*104
X10 = 0,0345610 = 0,3456*10 − 1
Двоичная система: X2 = − 101,012 = -0,101012 * 2112.
Как производится преобразование вещественного числа к нормализованной форме:
Нормализация влево: пошаговое деление числа на p и одновременное возрастание показателя степени.
N←[123,4510] = 0,1234510*103
N←[23,410*105] = 0,23410*107
Нормализация вправо: пошаговое умножение числа на p и одновременное уменьшение показателя степени.
N→[0,00098710] = 0,98710*10-3
Блок-схема нормализаций влево или вправо
Представление в ЭВМ вещественных чисел в нормализованной форме:
(знак числа, мантисса, знак порядка, порядок) на примере языка Pascal
Тип | Длина в байтах | Число значащих цифр в мантиссе | Диапазон десятичного порядка |
single | 7 – 8 | − 45 - 38 | |
real | 11 – 12 | − 39 - 38 | |
double | 15 - 16 | − 324 - 308 | |
extended | 19 - 20 | − 4932 - 4932 |
Представление вещественных чисел в ЭВМ определяется особенностями конструкции ЭВМ и программного обеспечения.
Нпример, для 32 разрядного (4 байтового) числа возможен следующий способ представления:
В ходе вычислений постоянно производится нормализация промежуточных и конечных значений: сдвиг мантиссы вправо и влево с одновременным изменением порядка. При сдвигах могут теряться значащие цифры мантиссы, то есть возрастать вычислительная погрешность.
О переполнении при операциях с вещественными переменными:
Мантисса не может переполниться: произойдет нормализация.
Порядок может переполниться.
Например, для схемы представления вещественного числа, приведенной выше имеем:
Точность обработки вещественных чисел зависит ль формы их представления:
Тип переменной | Точность – количество значащих цифр в мантиссе |
single | |
real | |
double | |
extended |
Повышение точности вычислений требует больших ресурсов компьютера, увеличивает время вычислений.
Один из аспектов оптимизации алгоритмов и программ их реализации: компромисс между точностью вычислений и затратами ресурсов ЭВМ (времени).
Чем больше разрядов отводится под запись мантиссы, тем выше точность представления чисел.
Чем больше разрядов занимает порядок, тем шире диапазон чисел от машинного нуля до наибольшего числа.
Вещественный формат с m - разрядной мантиссой дает возможность абсолютно точно представить m - разрядное целое число, то есть любое двоичное целое число, состоящее не более, чем из m разрядов, может быть без искажений представлено в вещественном формате (узлы сетки).
Иллюстрирующий пример-эксперимент №1.
Рассмотрим выражение: R=N* 1/N ─ 1.
1.В математике R=0 для любого N.
2. При программировании. Посмотрим, что будет, если запрограммировать это выражение:
Если задать N – произвольное вещественного типа,
то получим R ≠0, (R≈10-11 если R было описано как real).
Если задать N=2m, где 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
Суммируя таким образом, единицу не получим.