- •Введение
- •1. Предмет информатики
- •1.1 Роль информации в современном обществе
- •1.2 Информационные барьеры в истории человечества
- •1.3 Предметная область информатики
- •2. Теория информации
- •2.1 Исходные понятия теории информации
- •2.2 Формы представления информации
- •2.3 Преобразование сообщений
- •3. Понятие информации в теории Шеннона
- •3.1 Понятие энтропии
- •3.2 Условная энтропия
- •3.3 Статистическое определение информации
- •3.4 Энтропия и информация
- •3.5 Информация и алфавит
- •4. Кодирование символьной информации
- •4.1 Постановка задачи кодирования. Первая теорема Шеннона
- •4.2 Алфавитное неравномерное двоичное кодирование сигналами равной длительности
- •4.2.1 Неравномерный код с разделителем
- •4.2.2 Префиксное неравномерное кодирование
- •4.3 Равномерное алфавитное двоичное кодирование. Байтовый код
- •4.4 Алфавитное кодирование с неравной длительностью элементарных сигналов. Код Морзе
- •4.5 Блочное двоичное кодирование
- •5. Кодирование и представление чисел в компьютере
- •5.1 Системы счисления
- •5.2 Перевод чисел из одной системы счисления в другую
- •5.3 Перевод чисел между системами счисления с основанием 2k
- •5.4 Формы представления вещественных чисел
- •5.5 Кодирование целых чисел в компьютере
- •5.5.1 Кодирование в компьютере целых чисел без знака
- •5.5.2 Кодирование в компьютере целых чисел со знаком
- •5.6 Кодирование в компьютере вещественных чисел
- •5.7 Двоично-десятичные коды
- •5.7.1 Код (8421) – код прямого замещения
- •6. Обработка чисел в компьютере
- •6.1 Выполнение операций сложения
- •6.2 Сложение нормализованных чисел
- •6.3 Выполнение операции умножения
- •6.3.1 Общий алгоритм умножения
- •6.3.2 Особенности умножения в форме с плавающей запятой
- •6.4 Деление чисел
- •7. Кодирование графической и звуковой информации
- •7.1 Представление изображений
- •7.2 Представление звука
- •Список литературы
- •Родина Наталья Васильевна Информатика
- •Часть 1
- •107846, Москва, ул.Стромынка, 20
5.6 Кодирование в компьютере вещественных чисел
Вернемся к обсуждению того обстоятельства, что в компьютере для записи числа в любой форме представления отводится конечное число разрядов.
Для целых чисел это приводит к появлению понятия наибольшего целого числа. Однако для каждого целого числа, не превышающего по модулю наибольшего, имеется только одно представление в машинном коде, и, если не происходит переполнения, результат выполнения операции над целыми числами будет точным.
Но ситуация коренным образом меняется при представлении и обработке вещественных чисел. На математической оси вещественные числа образуют непрерывное множество (континуум), то есть два числа могут находиться сколь угодно близко друг к другу, и на любом отрезке содержится бесконечное множество значений чисел.
В машинном представлении количество возможных значений чисел конечно: для двоичной системы оно определяется как 2k, где k – количество двоичных разрядов в представлении мантиссы.
Т аким образом, вещественные числа в компьютере заменяются их кодами, которые образуют конечное дискретное множество; каждый код оказывается представлением целого интервала значений континуума.
Из данного обстоятельства вытекает ряд следствий:
1) строгие отношения между числами континуума превращаются в нестрогие для их компьютерных кодов, то есть
если x1 > x2, то X1 X2;
если x1 = x2, то X1 = X2;
если x1 < x2, то X1 X2;
2) поскольку код вещественного числа в компьютере является приблизительным представителем многих чисел из интервала, то и результаты вычислений также будут заведомо неточными, то есть содержать неизбежную погрешность.
В этом состоит главная особенность обработки вещественных чисел в компьютере – она всегда ведется с погрешностью (оценка этой погрешности – самостоятельная и непростая задача);
3) наряду с понятием наибольшего вещественного числа (из-за ограниченности разрядной сетки) появляется понятие наименьшего числа или машинного нуля.
Например, в типе Real языка Pascal любое число, по модулю меньше 2.310-39 оказывается машинным нулем, то есть считается равным 0 при сохранении и в операциях с ним.
Таким образом, понятие «0» как точное значение числа в компьютерном представлении заменяется понятием «машинный нуль» как значение числа меньше некоторой определенной величины.
Как уже было сказано, основной формой представления кодов вещественных чисел в компьютере является двоичная нормализованная. При этом записываться и храниться в памяти компьютера должны все составляющие нормализованной формы (знак числа, мантисса, знак порядка, порядок), что требует нескольких ячеек памяти.
Например, число типа Real в Pascal размещается в 6 байтах. Непосредственное распределение компонентов нормализованного числа по разрядам определяется конструктивными особенностями компьютера и программным обеспечением.
Например, возможно следующее распределение разрядов для размещения числа в 32 разрядах:
Н омер бита
31 30 29 28 27 26 25 24 23 … 1 0
|
|
|
|
|
|
|
|
|
|
|
|
З нак порядок знак мантисса
порядка числа
Поскольку значение мантиссы, лежит в интервале 0.1(2) , ноль в разряде целых и разделитель десятичных разрядов в представление не включается, то есть мантисса содержит только цифры дробной части.
Более того, можно не сохранять и первую значащую цифру мантиссы, поскольку она всегда 1 (но, естественно, восстанавливать ее при вычислениях) – это дает возможность хранить дополнительный «скрытый» разряд, то есть несколько повысить точность обработки.
Как и в случае целых чисел, для кодов вещественных чисел существует понятие переполнение, однако возникает оно не после заполнения разрядной сетки мантиссы – это приводит лишь к нормализации числа, а при заполнении всех разрядов порядка.
Для представленного выше примера размещения числа в 32-х битах, |X2max| = 0,1111 …1(2) 2 111111 2,147(10) 109 (в мантиссе 24 единицы).
Причиной возникновения погрешности при обработке кодов вещественных чисел является ограниченность разрядной сетки при их представлении. Однако ее величина зависит от количества имеющихся разрядов, и, в частности, уменьшить погрешность можно за счет расширения разрядов сетки, то есть выделения большего количества ячеек памяти для записи числа.
Например, в языке Pascal определен вещественный тип Extended (10 байт), для которого точность мантиссы достигает 20 десятичных знаков и значение модуля порядка до 4932(10).
Следовательно, повышение точности вычислений требует больших ресурсов памяти компьютера; одновременно с этим возрастает и время вычислений. Таким образом, при составлении программы для практических задач, решается проблема нахождения компромисса между точностью расчета и временем обработки.