При решении конкретных физических, математических и других задач фигурируют как очень малые, так и очень большие числа. Диапазон изменения величин может при этом составлять от 10-30 до 10+30.
Представление чисел в естественной форме в виде записи целой и дробной части числа, отделенных друг от друга запятой, называется формой представления чисел с фиксированной запятой. При этом представлении вещественных чисел в компьютере в разрядной сетке количество разрядов для целой и дробной части числа строго фиксировано и остается неизменным для любых чисел.
Ясно, что занимать разряды для хранения нулей в конце числа или в начале после запятой крайне неэффективно. Поэтому для представления вещественных чисел в современных компьютерах применяется другая форма, которую принято называть форма представления вещественных чисел с плавающей точкой (запятой).
Режим с фиксированной точкой в современных компьютерах фактически применяется только для целых чисел и условно запятая как бы зафиксирована после младшего разряда. В формате с плавающей запятой разряды регистра разбиваются на два поля, имеющие название мантисса и порядок.
Для однозначности представления чисел с плавающей точкой в компьютере, кроме того, используется нормализованная форма записи чисел, при которой число записывается в таком виде, чтобы мантисса стала двоичной дробью (т.к. используется двоичная система счисления), у которой старший разряд обязательно равен 1, а порядок – целое положительное или отрицательное число:
А = ±т 2±р,
где т – мантисса числа, р – порядок числа,.
Компьютерная арифметика нормализованных чисел тесно связана с её реализацией в компьютере. Связь состоит в том, что в памяти компьютера для представления вещественных чисел в нормализованном виде отводится раз и навсегда установленное число разрядов для порядка и для мантиссы. При этом мантисса и порядок представляются в прямом коде, если числа положительны, и в дополнительном коде, если они отрицательны. Как правило, число в форме с плавающей точкой занимает в памяти компьютера четыре (слово) или восемь байт (двойное слово).
При записи числа с плавающей точкой выделяются разряды для хранения знака мантиссы, знака порядка, порядка и мантиссы, например:
Рис.2.4. Пример представления вещественного числа
Максимальное значение порядка при таком представлении вёщественных чисел, когда под порядок отводится, например, шесть I двоичных разрядов (как на рис. 2.4), составит pmax= 111111 =26-1=63
, а это означает, что в четырех байтах можно записать максимальное вещественное число А
= 263~ 1019. Как видно из приведенной мера, всего 32 двоичных разряда могут представлять очень большие числа.
Если под порядок отвести 7 разрядов, то получим, что порядок максимального вещественного числа будет равен p =2
-1=127
, т.е.A
=2127
1038 с точностью около семи десятичных разрядов (2
-1).| Когда такой точности не хватает, используется формат удвоенной точности, при котором для записи мантиссы отводится дополнительная область. Это позволяет получить большее число значащих цифр в мантиссе при том же диапазоне порядков.
Таким образом, представление чисел в форме с плавающей точкой обеспечивает одинаково эффективные средства представления как очень малых, так и очень больших по величине чисел. Кроме того, нормализованное представление чисел позволяет не только сохранять в разрядной сетке большее количество значащих цифр и тем самым повышать точность вычислений, но также упрощает действия над порядками и мантиссами в компьютерной арифметике.
Для упрощения действий над порядками их сводят к микрооперациям над целыми положительными числами путем искусственного смещения значения порядка p на величину +|p | [33]. Смещенный порядок определяется по формуле
Е = p + |p |
В смещенном порядке знак отсутствует. Для представления Е необходимо столько же разрядов, как и для представления модуля порядка и знака. Так, если порядок будет занимать один байт в числе, то 7 разрядов в обычном представлении в нем отводится под модуль порядка, и ртах= 27-1. Теперь, прибавляя к любому порядку число p (+127), получим смещенный порядок. Например, если p = + 5, то E
=5 + 127 = 132
. Размещая E
без знака, получим представление смещенного порядка 1000 0100 в разрядной сетке размером в 1 байт. Истинный порядок числа может быть определен простым вычитанием значения смещения его формата.
Смещенный порядок с нулями во всех разрядах соответствует наибольшему отрицательному порядку, а смещенный порядок с единицами во всех разрядах - наибольшему положительному порядку. Величина E=p указывает на нулевой порядок. Смещенный порядок намного упрощает операции сравнения и сдвига чисел. Например, сравнение двух вещественных чисел (одинакового формата и знака) происходит так, как если бы они были двоичными целыми без знака. Таким образом, при побитном сравнении чисел слева направо первый же отличный бит определяет отношение этих чисел, поэтому нет необходимости вести сравнение дальше.
Если при сложении мантисс появляется цифра с весом 2°, то есть мантисса вида 1,..., то считается, что произошло левое нарушение нормализации числа, когда |m| 1. А если в микрооперациях получена мантисса |m|<1/2, то это соответствует правому нарушению нормализации числа, когда в старшем разряде мантиссы с весом 2
появляется нуль.
Учитывая, что нормализованная мантисса всегда содержит 1 в старшем разряде, часто мантиссу сдвигают на один разряд влево, увеличивая точность представления числа включением в разрядную сетку еще одного младшего разряда мантиссы. Единица с весом 2 сдвигается в разряд с весом 2°, однако в разрядной сетке ОЗУ она не размещается и восстанавливается только в регистрах сопроцессора. Если представить число в формате с одинарной точностью, где под порядок отводится байт, оно будет иметь вид:
… | … | ||||||||||||||||
![]() |
|

Наибольшее отличное от нуля по модулю число, которое может быть представлено в формате одинарной точности, будет равно 2 *(1 - 2
), а наименьшее -2
*(1/2)= 2
.
В зависимости от целей программирования в ЭВМ используются различные форматы данных. Чем больше разрядов отводится под запись мантиссы, тем выше точность представления числа. Чем больше разрядов занимает порядок, тем шире диапазон от наименьшего отличного от нуля числа до наибольшего числа, представимого в машине при заданном формате.
Стандартные форматы представления вещественных чисел:
1. Одинарный - 32-разрядное нормализованное число со знаком,
8-разрядным смещенным порядком и 24-разрядной мантиссой
(старший бит мантиссы, всегда равный 1, не хранится в памяти
и размер поля, выделенного для хранения мантиссы, составляет
только 23 разряда).
2. Двойной - 64-разрядное нормализованное число со знаком, 11-
разрядным смещенным порядком и 53-разрядной мантиссой 1
(старший бит мантиссы не хранится и размер поля, выделенного |
для хранения мантиссы, составляет 52 разряда).
3. Расширенный - 80-разрядное число со знаком, 15-разрядным!
смещенным порядком и 64-разрядной мантиссой. Позволяет |
хранить ненормализованные числа.
Операция алгебраического сложения чисел в формате с плавающей запятой в компьютере сводится к процедуре выравнивания порядков, с тем чтобы оба операнда имели одинаковый порядок, а затем производится сложение или вычитание мантисс. Выравнивание порядков операндов осуществляется сдвигом вправо мантиссы меньшего числа. Полученный результат нормализуется.
При выполнении операций умножения и деления порядки не выравниваются. Производится лишь сложение (при умножении) или вычитание (при делении) порядков и умножение или деление мантисс. Результат также нормализуется.
Обобщим, как происходит работа с числовой информацией в компьютере на примере вещественных чисел. Всякое десятичное число, прежде чем оно попадает в память компьютера, преобразуется по схеме:A
A
m*10
, мантисса и порядок числа при этом записываются в двоичной системе счисления. Но на этом преобразование исходного числа не завершается: в полученном нормализованном двоичном числе мантисса и порядок заменяются их кодами и только потом полученные коды порядка и мантиссы перемещаются в ячейки памяти компьютера. Это преобразование осуществляется автоматически при вводе данных в компьютер. В процессе выполнения вычислений коды мантисс и порядка конкретных чисел извлекаются из ячеек памяти и направляются в арифметическое устройство, где над кодами по специальным правилам двоичной арифметики выполняются действия.
Еще раз подчеркнем, что в арифметическом устройстве действия выполняются не над двоичными числами по правилам двоичной арифметики, а над кодами двоичных чисел по правилам арифметики кодов (компьютерной арифметики). В итоге получаются коды порядка и мантиссы результата. По этим данным восстанавливается результат в виде двоичного числа со знаком обратным преобразованием. После этого полученное нормализованное двоичное число преобразуется в десятичное.
Арифметические операции с числами в форме с плавающей запятой сложнее таких же операций для чисел с фиксированной запятой. Но зато плавающая запятая позволяет производить операции масштабирования автоматически в самой машине и избавляет от накопления абсолютной погрешности при вычислениях (хотя не избавляет от накопления относительной погрешности) [33,19].
2.3.2. Символьная информация
При двоичном кодировании текстовой информации в компьютере каждому символу ставится в соответствие его код. Традиционно для кодирования одного символа используется количество информации равное, 1 байту или 8 битам (вот почему минимальной группой из соседних запоминающих элементов, с которой компьютер оперирует как с одним целым, является байт). Подсчитаем приблизительный объем текстовой информации в "Современном словаре иностранных слов" из 740 страниц, если на одной странице размещается в среднем 60 строк по 80 символов (включая пробелы).:
80*60*740=3 552 000 байт 3469 Кбайт
3,4 Мбайт. Таким образом, объем информации в словаре равен приблизительно 3,4 Мбайт.
Используя всевозможные комбинации из 0 и 1, в восьми двоичных разрядах можно закодировать 28=256 различных символов. Такого количества символов вполне достаточно для представления текстовой информации, включая большие и маленькие буквы латинского и национального (например, русского) алфавита, знаки препинания, цифры, скобки, знаки арифметических действий, кавычки, графические символы и некоторые дополнительные символы.
Кодирование в данном случае заключается в том, что каждому символу ставится в соответствие уникальный десятичный код от 0 до 255 или соответствующий ему двоичный код от 00000000 до 11111111. Таким образом, человек различает символы по их начертанию, а компьютер - по их коду. Например, при нажатии клавиши с латинской буквой А в оперативную память передается двоичный код 01000001. При выводе символа на экран дисплея производится декодирование: по двоичному коду символа на экране строится его изображение. Кодирование и декодирование происходят в компьютере автоматически за миллионные доли секунды.
Для сокращения записей и удобства восприятия вместо двоичных кодов используют шестнадцатеричные. Например, код латинской буквы А задается шестнадцатеричным числом 4116, код знака < -числом ЗС16. Используемые в вычислительной технике кодовые комбинации символов представляют в виде кодировочных (кодовых) таблиц. Кодировочные таблицы имеют 16 строк и 16 столбцов (16*16=256 символов), которые нумеруются обычно шестнадцатеричными цифрами от 0 до F. Место символа в таблице определяет его шестнадцатеричный код, при этом вначале записывается номер строки. Например, если символ стоит в строке 7 и столбце D, то его код ID.
Заметим, что числа в компьютере могут быть представлены двумя способами. Если число используется для вычислений, то оно переводится в двоичную систему счисления (например, 27 =110112) и его двоичный код размещается в памяти компьютера. Если это число используется в тексте, то оно будет кодироваться в соответствие с кодовой таблицей, т.е. цифра 2 заменяется кодом 32, цифра 7 - кодом 37, и полный код этого числа при кодировании текста будет иметь вид 3237.
На разных типах компьютеров используют разные кодировочные таблицы. В качестве одного из стандартов во всем мире принята таблица ASCII (American Standard Code for Information Interchange - Американский стандартный код для информационного обмена), кодирующая ровно половину возможных символов - от 0 до 127 (табл.2.12).
Таблица 2.12
Все другие стандарты кодировочных таблиц включают этот Фрагмент без изменений, а во второй половине содержат коды национальных алфавитов, символы псевдографики и некоторые математические знаки.
В последнее время появился новый международный стандарт символьного кодирования UNICODE, в котором каждый символ кодируется 2-мя байтами и поэтому с его помощью можно закодировать уже не 28=256, а 216=65536 различных символов, включая математическую символику, греческий алфавит и др.
2.3.3. Графическая информация
Мониторы современных компьютеров могут работать в двух режимах: текстовом и графическом. Информация, которая выводится на экран дисплея в текстовом режиме, является текстовой и кодируется как символьная информация. При этом экран дисплея обычно разбивается на 25 строк по 80 символов в строке. В каждую позицию экрана (знакоместо) может быть выведен один из 256 символов. В текстовом режиме на экран монитора можно выводить тексты и простые рисунки, составленные из символов псевдографики.
С 80-х гг. начала развиваться технология обработки на ЭВМграфической информации. В графическом режиме экран дисплея разделяется на отдельные светящиеся точки (пиксели), количество которых определяет разрешающую способность монитора и зависит от его типа и режима (например, 640 по горизонтали и 480 по вертикали при 16 цветах или 800 по горизонтали и 600 по вертикали при 256 цветах). При хранении графических изображений количество элементов, заносимых в память, соответствует количеству точек экрана, занятых данным изображением. Такую форму представления графических изображений, состоящих из отдельных точек (пикселей), называют растровой.
Растровую форму представления графической информации можно сравнить с построением изображения в виде мозаики из большого количества маленьких разноцветных стекол. Ясно, что при такой форме кодирования графической информации качество изображения ухудшается при увеличении масштаба просмотра (например, прямые линии становятся ломаными). Посмотрите, как выглядит закодированная часть черно-белого рисунка, изображающего стрелку в увеличенном масштабе (рис.2.5):
Рис.2.5. Кодирование графического изображения
Качество такого кодирования графического изображения зависит от двух параметров. Во-первых, оно тем выше, чем меньше размер точки и соответственно большее количество точек составляет изображение. Во-вторых, чем большее количество цветов, т.е. большее количество возможных состояний пикселя, используется, тем более качественно кодируется изображение. Совокупность используемого набора цветов образует цветовую палитру.
Современные мониторы имеют следующие цветовые палитры: 16, 256, 65 536 (high color), 16 777 216 (true color) и выше. Определим, сколько разрядов потребуется для кодирования цвета одного пикселя для различной палитры. Один пиксель черно-белого экрана (два цвета) кодируется 1 битом информации (например, 0 - цвет черный, 1 - цвет белый). Для кодирования четырех (22) цветов потребуется 2 бита, восьми (23) цветов - 3 бита, а шестнадцати (24) цветов -4 бита. Таким образом, количество различных цветов п, которые можно закодировать в k битах, вычисляется по формуле n=2 . В табл. 2.13 показана зависимость информационной емкости одного пикселя от цветовой палитры монитора.
Пример кодировки для 16 цветов приведен в табл. 2.14.
Подсчитаем объем памяти необходимый для хранения одного 16-цветного графического изображения на мониторе EGA, имеющего 640 точек по горизонтали и 350 по вертикали. Так как 16-цветное изображение требует 4 бита на каждую точку экрана, а всего точек 640*350, то получим
4*640*350 = 896 000 бит) = 112 000 (байт) =110 (Кбайт).
Растровый способ хранения графической информации применяется для рисунков типа аппликации, отсканированных фотографий, иллюстраций и т.п..
Ввод и хранение в компьютере технических чертежей и им подобных графических изображений осуществляется по-другому. Любой чертеж состоит из отрезков, дуг, окружностей. Положение каждого отрезка на чертеже задается координатами двух точек, определяющих их начало и конец, окружность задается координатами центра и длиной окружности, дуга - координатами начала и конца, центром и радиусом. Для каждой линии указывается ее тип: тонкая, штрихпунктирная и т. д. Такая форма представления графической информации называется векторной. Минимальной единицей, обрабатываемой специальными программами, при векторной форме представления графической информации является объект (прямоугольник, круг, дуга). Хранение графической информации, представленной в векторной форме, на несколько порядков сокращает необходимый объем памяти по сравнению с растровой формой представления графической информации. Такая информация о чертеже вводится в ЭВМ как обычная буквенно-цифровая и обрабатывается в дальнейшем специальными программами.
2.3.4. Звуковая информация
Звук представляет собой акустическую волну, характеризующуюся непрерывно меняющейся во времени амплитудой и частотой. Для теории информации принципиально важным является тезис о том, что двоичное кодирование можно успешно применять для записи не только дискретной, но и непрерывной информации. Для того чтобы компьютер мог обрабатывать непрерывный звуковой сигнал, он должен быть превращен в последовательность электрических импульсов (двоичных нулей и единиц).
В процессе кодирования фонограммы непрерывная звуковая волна разбивается по времени на отдельные маленькие временные Участки (элементарные звуки). На графике это выглядит как замена гладкой кривой на последовательность "ступенек" (рис.2.6)
Рис. 2.6 Пример кодировки звуковой информации
Для каждого участка устанавливается определенная величина амплитуды, каждому значению амплитуды присваивается двоичный код. Качество кодирования зависит от количества измерений уровня сигнала в единицу времени. Современные звуковые карты обеспечивают двухбайтовое кодирование звука, а это 216=65536 уровней сигнала (для кодирования русской речи достаточно 40 - 45 уровней элементарных звуков). Периодически определяет уровень звукового сигнала и превращает его в цифровой код аналого-цифровой преобразователь. Этот уровень сигнала и записывается на магнитный диск, но уже как цифровой код. С диска цифровой код подается на цифро-аналоговый преобразователь, который преобразует цифровые сигналы в аналоговые.