В памяти компьютера вещественные числа представлены в форме с плавающей точкой, в двоичной системе счисления. Десятичное число D в этой форме записи имеет вид D=+- m*10n, где m и n – соответственно мантисса числа и его порядок.
В ЭВМ используют нормализованное представление числа в форме с плавающей точкой. Мантисса в нормализованном представлении должна удовлетворять условию: 0.1p≤m<1p
Иначе говоря, мантисса меньше 1 и первая значащая цифра - не 0.
тема 1 вопрос 16
машинное представление вещественных чисел. нормализованная форма,
экспоненциальная нормализованная форма числа. примеры
1.5. Машинное представление вещественных чисел. Мантисса и порядок.
В памяти компьютера вещественные числа представлены в форме с плавающей точкой, в
двоичной системе счисления. Десятичное число D в этой форме записи имеет вид D=+
m*10n, где m и n – соответственно мантисса числа и его порядок.
В ЭВМ используют нормализованное представление числа в форме с плавающей точкой.
Мантисса в нормализованном представлении должна удовлетворять условию: 0.1p≤m<1p
Иначе говоря, мантисса меньше 1 и первая значащая цифра не 0.
Например, число 357.5 можно записать в виде:3575*101 , 0.3575*103. Последняя запись
– нормализованная форма числа с плавающей точкой. Обычная же запись числа в виде
357.5 называется формой записи с фиксированной точкой. Такое представление чисел в
компьютерах используется только на этапах их ввода или вывода, в то время как хранение
и обработка вещественных чисел осуществляется именно в форме с плавающей точкой.
1.6. Машинная точность
Конечное количество разрядов мантиссы приводит к тому, что при вычислениях с
помощью компьютера неизбежны погрешности округления. Так, например, если при 6
десятичных разрядах к числу 0.214724 прибавить число, меньшее по модулю половины
последнего разряда (т.е. меньшее по модулю 0.0000005), в результате получится то же
самое число 0.214724. Величина ошибки округления определяется количеством разрядов
мантиссы. При округлении по дополнению (которое, как правило, и реализуется в
компьютерах) максимальная относительная погрешность округления равна Emax и
называется машинной точностью.
1.7. Верные цифры.
Пусть а точное значение, a* приближенное значение некоторой величины. Абсолютной
погрешностью приближенного значения называется величина
Значащими цифрами числа a* называют все цифры в его записи, начиная с первой
ненулевой слева.
Значащую цифру числа a* называют верной, если абсолютная погрешность числа не
превосходит единицы разряда, соответствующего этой цифре.
Представление вещественных чисел
В большинстве современных компьютеров аппаратно реализована вещественная
арифметика, соответствующая стандарту IEEE. В соответствии со стандартом существует
2 основных представления вещественного числа — с одинарной (float) и двойной (double)
точностью. Во всех представлениях один бит используется как знаковый. Есть еще одно
представление вещественных чисел — 10байтовое, используемое при вычислениях для
хранения промежуточных результатов и называемое представлением с расширенной
точностью.
тип длина мантисса показатель
float 4 байта 23 бита 8 битов
double 8 байтов 52 бита 11 битов
Машинное представление вещественного числа с плавающей точкой имеет следующий
вид: +/ M * 2E, где M — вещественная мантисса, E — целочисленный показатель.
Мантисса представлена в виде последовательности разрядов двоичной дроби:M = M0 + M1/2 + M2/4 + ... + Mn/2n
Для представления всех вещественных чисел кроме нуля используется нормализованная
форма, когда нулевой разряд мантиссы M0 равен 1. При таком представлении нулевой
разряд опускается и хранятся только разряды M1 ... Mn. Таким образом, мантисса M
удовлетворяет неравенству 1 <= M < 2.
Машинное представление вещественных чисел содержит конечное число элементов.
Только некоторые вещественные числа могут быть точно представлены описанным выше
способом. Такие вещественные числа называются точно представимыми или просто
представимыми в используемой машинной арифметике. Даже простые на вид рациональные
числа такие как 0.1 оказываются непредставимыми. Непредставимое число заменяется
ближайшим представимым числом.
Простые примеры
Непредставимые в машинной арифметике числа оказываются заданными приближенно и
точность приближения зависит от того, какая используется арифметика — одинарной или
двойной точности. Кроме этого следует помнить, что все промежуточные вычисления
происходят в арифметике расширенной точности. Поэтому в следующем примере
float x4 = 0.1;
double x8 = 0.1;
не стоит надеяться, что x4 == 0.1 или x8 == 0.1. Дело в том, что при сравнении
используется 10байтовое представление для константы 0.1, не совпадающее с 8байтовым
в случае переменной x8 и 4байтовым для x4. Ясно, что по аналогичной причине не будет
выполнено равенство x4 == x8.
Последовательные операции с непредставимыми числами могут приводить к накоплению
погрешности. Например, если просуммировать 1000 4байтовых представлений (float)
числа 0.1, то мы получим результат, отличающийся на 0.000953674 от точного. Это —
вполне заметная погрешность.
Просуммируем вещественные числа вида 1.0/j при j = 1...1000 в разном порядке — по
возрастанию и по убыванию. При использовании вещественной арифметики однократной
точности (float) полученные результаты будут отличаться на 6.67572e006.
Кодирование вещественных чисел. Нормализованное представление числа
В компьютерной технике вещественными называются числа, имеющие дробную часть.
Дробные числа могут содержать большой набор цифр. Например: 0.0000345 или 10900000
(т.е очень большие или очень маленькие числа). Для удобства вещественные числа
приводят к виду так называемого нормализованного представления числа. Заключается
такое представление в том, что число записывается в виде произведения на основание
системы счисления, возведенное в ту или иную степень. Например, предыдущие два числа в
нормализованном виде будут выглядеть так: 0.345 * 104 и 0.109 * 108. Здесь числа 0.345 и
0.109 – мантиссы вещественных чисел, 10 – основание системы счисления, а 4 и 8 –
порядки. При этом запятая (точка), разделяющая дробную и целую части ставится перед
первой значащей цифрой (отличной от 0).
Нормализованная форма числа является наиболее удобной для представления дробных
чисел в компьютере.Понятно, что нормализированное представление используется не только для десятичной
системы счисления. Вот примеры нормализованных записей дробных чисел в двоичной
системе счисления:
101.11 = 0.10111 * 211
0.001 = 0.1 * 210
Здесь степени 11 и 10 – это двоичная форма десятичных чисел 3 и 2.
Нормализованная форма представления числа – это одна из форм множества вариантов
экспоненциальной формы записи числа.
Пусть слово состоит из 2 байт, два слова – это 4 байта или 32 бита.
Нормализированное число одинарной точности, представленное в формате с плавающей
точкой, записывается в память следующим образом: знак числа – в бите 15 первого слова (0
– для положительных и 1 – для отрицательных чисел); порядок размещается в битах 714
первого слова, а мантисса занимает остальные 23 бита в двух словах (с 0 по 6 бит первого
слова и все биты второго слова). Нормализированное число двойной точности записывается
в четыре слова памяти и отличается от представления чисел с одинарной точностью только
тем, что продолжение мантиссы размещается в следующих за первым словом трех
последовательных словах памяти, а всего под мантиссу в этом случае отводится 55 бит.
Порядок числа, представленного в формате с плавающей точкой, изменяется в диапазоне
от 128 до +127 и запоминается увеличенным на 128. Такой способ представления порядка
называется смещенным.
Следует иметь в виду, что, хотя для мантиссы отведено 23 разряда для чисел одинарной
точности и 55 разрядов – для чисел двойной точности, в операциях участвует 24 и 56
разрядов соответственно, т.к. старший разряд мантиссы нормализированного числа не
хранится, т.е. имеет место так называемый скрытый разряд. Однако при аппаратном
выполнении операций этот разряд автоматически восстанавливается и учитывается.
Порядок числа также учитывает скрытый старший разряд мантиссы.
Нормализованная мантисса в двоичной системе счисления всегда представляется
десятичным числом m, лежащим в диапазоне 0,5 <= m < 1.
Пример представления числа в формате с плавающей точкой:
0.110 = 0.000(1100)2 = 0.(1100)2*23
310 = (3 + gelleruri128)10 = 011111012.
Если мантисса представлена бесконечной периодической дробью, то последний
учитываемый разряд мантиссы округляется.
49.510 = 110001.1002 = 0.11000112*26
610 = (6 + 128)10 = 100001102.
При выполнении арифметических операций над числами, представленными в формате с
плавающей точкой, надо отдельно выполнять их для порядков и мантисс. При
алгебраическом сложении чисел надо сначала уравнять порядки слагаемых. При
умножении порядки надо складывать, а мантиссы — перемножать. При делении из порядка
делимого вычитают порядок делителя, а над мантиссами совершают обычную операцию
деления. После выполнения операций, если это необходимо, проводят нормализацию
результата, что влечет изменение порядков, т.к. каждый сдвиг на один разряд влево
соответствует уменьшению порядка на единицу, а сдвиг вправо увеличению на единицу.
Введение термина «плавающая точка» как раз и объясняется тем, что двоичный порядок,
определяющий фактическое положение точки в изображении числа, корректируется после
выполнения каждой арифметической операции, т.е. точка в изображении числа «плавает»
(изменяется ее положение) по мере изменения данной величины. А в изображении чисел,
представленных в формате с фиксированной точкой, она жестко зафиксирована в
определенном месте.
Арифметические операции с числами, представленными в формате с плавающей точкой,
намного сложнее таких же операций для чисел, представленных в формате с
фиксированной точкой. Но зато плавающая точка позволяет производить операциимасштабирования автоматически в самой машине и избавляет от накопления абсолютной
погрешности при вычислениях (хотя не избавляет от накопления относительной
погрешности).
Для представления вещественных чисел в современных компьютерах принят способ
представления с плавающей запятой. Этот способ представления опирается на
нормализованную (экспоненциальную) запись действительных чисел.
Как и для целых чисел, при представлении действительных чисел в компьютере чаще всего
используется двоичная система, следовательно, предварительно десятичное число должно
быть переведено двоичную систему.
Нормализованная записьотличного от нуля действительного числа это запись вида
где q целое число (положительное, отрицательное или ноль), а m правильная
.
Pичная дробь, у которой первая цифра после запятой не равна нулю, то есть
При этом m называется мантиссой числа, q порядком числа.
Примеры:
3,1415926 = 0, 31415926 * 101;
1000=0,1 * 104;
0,123456789 = 0,123456789 * 100;
0,00001078 = 0,1078 * 84; (порядок записан в 10й системе)
1000,00012 = 0, 100000012 * 24.
Так как число ноль не может быть записано в нормализованной форме в том виде, в каком
он был определен, то считаем, что нормализованная запись нуля в 10й системе будет
такой: 0 = 0,0 * 100.
Нормализованная экспоненциальная запись числа это запись вида
целое число (положительное, отрицательное или ноль), а m Pичная дробь, у которой
целая часть состоит из одной цифры. При этом (mцелая часть) называется мантиссой
числа, q порядком числа.
где q
Нормализованная запись отличного от нуля действительного числа это запись вида a=
m*Pq, где q целое число (положительное, отрицательное или ноль), а m правильная P
ичная дробь, у которой первая цифра после запятой не равна нулю, то есть
этом m называется мантиссой числа, q порядком числа.
Примеры:
. При
1. 3,1415926 = 0, 31415926 * 101;
2. 1000=0,1 * 104;
3. 0,123456789 = 0,123456789 * 100;
4. 0,00001078 = 0,1078 * 84; (порядок записан в 10й системе)
5. 1000,00012 = 0, 100000012 * 24.
Так как число ноль не может быть записано в нормализованной форме в том виде, в каком
она была определена, то считаем, что нормализованная запись нуля в 10й системе будет
такой:
0 = 0,0 * 100.
Нормализованная экспоненциальная запись числа это запись вида a= m*Pq, где q
целое число (положительное, отрицательное или ноль), а m Pичная дробь, у которой
целая часть состоит из одной цифры. При этом (mцелая часть) называется мантиссой
числа, q порядком числа.