Основы хранения информации в компьютере
Как было выяснено ранее, информация всегда имеет форму сообщения, а сообщение кодируется тем или иным набором знаков, символов, цифр. Теоретически и экспериментально было показано, что с технической точки зрения самым удобным и эффективным является использование двоичного кода, то есть набора символов, алфавита, состоящего из пары цифр {0,1}. Поскольку двоичный код используется для хранения информации в вычислительных машинах, его еще называют машинным кодом.
Цифры 0 и 1, образующие набор {0,1}, обычно называют двоичными цифрами, потому что они используются как алфавит в так называемой двоичной системе счисления.Система счисления представляет собой совокупность правил и приемов наименования и записи чисел, а также получения значения чисел из изображающих их символов. Количество знаков в алфавите системы счисления обычно отражается в ее названии: двоичная, троичная, восьмеричная, десятичная, шестнадцатеричная и т. д. Вообще говоря, можно рассматривать системы счисления с любым количеством знаков в алфавите. В настоящее время общепринятой является арабская десятичная система счисления, алфавит которой состоит из десяти цифр {0,1,2,3,4,5,6,7,8,9}. Однако для использования в ЭВМ десятичная система слишком сложна, так как для ее применения необходимо подобрать технические способы изображения десяти различных цифр. С точки зрения технической реализации компьютера, гораздо проще работать всего с двумя цифрами двоичной системы {0,1}.
ВНИМАНИЕ
Элементарное устройство памяти компьютера, которое применяется для изображения одной двоичной цифры, называется двоичным разрядом или битом.
Слово «бит» произошло от английского термина bit, представляющего собой сокращение словосочетания BInary digiT — двоичная цифра. Технически бит может быть реализован самыми разными способами. Однако каким именно конкретным способом это сделано в компьютере — для нас совершенно безразлично. Важно лишь понимание назначения и свойств, функций бита:
§ Бит может находиться только в одном из двух возможных состояний, одно из которых принято считать изображением цифры «0», а второе — изображением цифры «1». Свое состояние бит сохраняет сколь угодно долго, пока оно не будет изменено принудительным способом. Следовательно, бит может хранить записанную в нем информацию.
§ В любой момент времени можно узнать, в каком из двух состояний находится бит — в состоянии «0» или в состоянии «1», при этом исходное состояние бита останется неизменным. Другими словами, можно прочитатьзаписанную в бит информацию (без ее потери).
§ Всегда, когда в этом возникнет необходимость и вне зависимости от текущего состояния, можно перевести бит из одного состояния в другое. Иначе говоря, в бит можнозаписатьновую информацию.
Таким образом, бит обеспечивает базу для выполнения двух основных функций компьютера — хранения и обмена данными. Для того чтобы выполнить обмен, то есть принять либо передать информацию, ее сначала нужно прочитать в том месте, где она хранится, а затем записать на новом месте.
Бит — это очень маленькая порция информации. Поэтому, так же как при записи десятичных чисел, используется несколько десятичных разрядов — разряд единиц, разряд десятков, сотен и т. д., так и для записи двоичных чисел используется несколько двоичных разрядов, несколько битов.
Обратите внимание на некоторую нестрогость, многозначность в используемой терминологии. Термин «бит», как и словосочетание «двоичный разряд», используется для обозначения: 1) элементарного устройства памяти компьютера; 2) двоичной цифры, которая находится в этом устройстве; 3) отдельной двоичной цифры, входящей в двоичное число, независимо от того, хранится это число в компьютере или же нет. К счастью, смысл, который вкладывается в данные термины, достаточно просто выявляется из контекста.
Для хранения двоичных чисел в компьютере используется устройство, которое принято называть ячейкой памяти. Память компьютера можно образно представить себе как автоматическую камеру хранения, состоящую из отдельных ячеек, в каждую из которых можно положить некоторое число. Ячейки образуются из нескольких битов, так же как двоичные числа образуются из двоичных разрядов. В общем случае ячейки различных компьютеров могут состоять из различного количества битов. Однако это создает значительные сложности для организации обмена информацией между разными моделями компьютеров. Поэтому, начиная с машин третьего поколения, стандартными являются ячейки, которые состоят из восьми битов.
ВНИМАНИЕ
Элемент памяти компьютера, состоящий из восьми битов, называется байтом.
Слово «байт» произошло от английского термина byte, представляющего собой сокращение словосочетания BinarY TErm — двоичный терм, выражение. Байт сохраняет все свойства бита, то есть он может сколь угодно долго хранить записанный в него двоичный код, этот код можно прочитать, можно также записать в байт любой новый код. Каждый из восьми битов байта может содержать любую из двоичных цифр независимо от остальных. Следовательно, байт может содержать произвольную комбинацию, последовательность из восьми нулей или единиц, например, последовательность 10110011. Такую последовательность также называют двоичным числом, двоичным кодом либо просто кодом.
Рис. 4.1.Условные изображения: бита (а); байта (б)
Условно бит изображают в виде квадратика, содержащего либо цифру «0», либо цифру «1», а байт рисуют в виде расположенных рядом восьми одинаковых квадратиков, каждый из которых содержит какую-либо двоичную цифру (рис. 4.1).
Запись двоичного кода легко спутать с аналогичным по записи десятичным числом, например, двоичный код 10110011 можно рассматривать и как «обычное» число «десять миллионов сто десять тысяч одиннадцать». В тех случаях, когда есть опасность спутать десятичное и двоичное числа, справа от двоичного числа записывают индекс 2, а около десятичного числа указывают индекс 10. Таким образом, 101100112 — двоичное число, а 1011001110 — десятичное. Для удобства восприятия десятичные числа в текстах на русском языке принято делить на группы по три цифры в каждой и отделять эти группы друг от друга пробелом — 1011001110. По аналогии с этим двоичные числа иногда также группируют, но по четыре цифры в группе — 1011 00112.
Так как байт состоит из восьми двоичных разрядов, то количество различных кодов, различных комбинаций из восьми нулей и единиц, записываемых в один байт, равно 28=256. Для перебора всех возможных комбинаций можно начать с кода, содержащего восемь нулей 0000 00002, следующим записать код 0000 00012, затем — 0000 00102,0000 00112 и т. д. до кода, состоящего только из одних единиц 1111 11112 . Всего таких комбинаций будет как раз 256.
Как видно из приведенных выше примеров, запись содержимого байта довольно длинная — более чем в три раза длиннее записи соответствующего числа в десятичной системе счисления. Кроме того, восприятие человеком двоичного кода затруднено. Поэтому для сокращения записи двоичных кодов часто используют вспомогательную шестнадцатеричную систему счисления. Ее алфавит состоит из шестнадцати символов {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}. Эта система связана с двоичной очень простыми правилами перехода от двоичных кодов к шестнадцатеричным и обратно — от шестнадцатеричных к двоичным. Для таких переходов используется таблица, в которой каждой шестнадцатеричной соответствуют ровно четыре двоичных цифры (табл, 4.1). Четверку двоичных цифр иногда называют тетрадой.
Таблица 4.1 . Соответствие между тетрадами и шестнадцатеричными цифрами
16-я, цифра | 2-я четверка | 16-я цифра | 2-я четверка | 16-я цифра | 2-я четверка | 16-я цифра | 2-я четверка |
А В | С D Е F |
Собственно переход от двоичных чисел к их шестнадцатеричным эквивалентам и обратно осуществляется простой заменой каждой четверки двоичных цифр кода на соответствующую ей одну шестнадцатеричную и, наоборот, вместо одной шестнадцатеричной цифры подставляются четыре двоичных. Возьмем, например, двоичный код 0011 10112. Он состоит из двух двоичных четверок. Первая — 00112 и вторая — 10112. По таблице находим, что тетраду 00112 нужно заменить на шестнадцатеричную цифру 3, а тетраду 10112 — на шестнадцатеричную цифру В. Таким образом, двоичному коду 0011 10112 соответствует шестнадцатеричный код 3В. Во избежание недоразумений в тех случаях, когда они могут возникнуть, справа от шестнадцатеричных чисел (кодов) выставляется индекс 16 — 3В16. Приведем еще несколько примеров: — 1010 11002 соответствует коду АС16, 111001102 — Е616 и т. д. Обратный переход также прост. Так, шестнадцатеричный код С816 после замены каждой цифры соответствующей четверкой двоичных приобретает вид 1100 10002. Из приведенных примеров видно, что запись кода сокращается ровно в четыре раза. Для записи содержимого байта двоичными цифрами нужно восемь цифр, а если для этого использовать шестнадцатеричные, то всего две. Еще раз обращаем внимание читателя на то, что в компьютере для кодирования программ и данных используется только двоичная система счисления. Шестнадцатеричная же используется только как вспомогательная, для сокращения записи двоичных кодов при письме.
При компьютерной обработке информации приходится иметь дело с числовой, текстовой, графической, звуковой и т. д. информацией. Для хранения данных различной природы применяются различные способы кодировки. Кроме того, для одной и той же разновидности информации также могут использоваться различные способы кодировки, которые отличаются друг от друга эффективностью, а также различными требованиями к ресурсам компьютера.
ВНИМАНИЕ
Конкретный способ кодирования той или иной разновидности информации (данных) в компьютере принято называть форматом данных.
В общем случае термин «формат» понимается как строго определенный, исчерпывающе полный набор правил. Следовательно, в приведенном выше определении речь идет об исчерпывающем наборе правил кодирования той или иной разновидности данных.
Текстовая информация
При хранении в компьютере любой текст (документ, статья, книга) рассматривается как линейная последовательность символов. Причем промежуток между отдельными словами — пробел, переход на следующую строчку, переход на следующую страницу — также могут рассматриваться как некие специальные символы. Каждому символу из этой последовательности ставится в соответствие конкретный двоичный код, состоящий ровно из восьми двоичных разрядов. Таким образом, код каждого символа текста занимает ровно один байт памяти. И следовательно, текст целиком занимает столько байт памяти машины, из скольких символов он состоит (включая все символы текста — пробелы, знаки препинания, специальные знаки перехода на новую строчку, на новую страницу и т. д.).
Списки всех используемых при записи текстов символов и соответствующих им двоичных кодов образуют так называемые кодовые таблицы.В практике программирования применяются различные кодовые таблицы. Наиболее часто используется кодовая таблица ASCII(American Standart Code for Information Interchange — стандартный американский код для обмена информацией), которая в настоящее время фактически стала общемировым стандартом. В таблицу входят коды строчных и заглавных латинских букв, коды для цифр, знаков препинания, различных математических символов, символов, которыми можно рисовать в текстах таблицы и т. д. А всего в ней зафиксированы коды для 128 различных символов. Список этих символов и соответствующие им восьмиразрядные (то есть состоящие из восьми двоичных разрядов, цифр) двоичные коды образуют основную (базовую) кодовую таблицу ASCII. Но, как было выяснено ранее, один байт может содержать 256 различных двоичных кодов, состоящих из восьми бит. Это означает, что в стандарте ASCII задействована только половина возможных кодов. Имеются различные расширения основной кодовой таблицы ASCII, в которых задаются коды еще для 128 символов, в том числе для и символов различных национальных алфавитов. Фрагмент одного из расширений кодовой таблицы ASCII, включающий буквы русского алфавита — кириллицы, приведен в табл. 4.2.
Таблица 4.2. Фрагмент кодовой таблицы
Символ | 2-й код | 16-й код | Символ | 2-й код | 1 6-й код |
А Б В Г Д Е Ж И Й К Л М Н О П | 1000 1010 1000 1111 | 8А 8В 8С 8D 8Е 8F | Р С Т У Ф X Ц Ч Ш Щ Ъ Ы Ь Э Ю Я | 1001 0000 1001 0001 1001 0100 1001 0101 1001 1000 1001 1001 1001 1010 1001 1011 1001 1100 1001 1101 1001 1110 1001 1111 | 9А 9В 9С 9D 9Е 9F |
В качестве примера кодировки получим машинный код текста, состоящего из одного слова «КОМПЬЮТЕР». Этот текст состоит из 9 символов, следовательно, для его хранения требуется 9 байтов памяти. Используя табл. 4.2, для каждого символа легко получить соответствующий ему двоичный код. Остается только записать найденные коды в группу подряд расположенных байтов памяти. В таблице 4.3 приведен полученный таким образом машинный код этого текста. В первой строке таблицы указаны порядковые номера байтов памяти, в которых записан текст, во второй — символы, из которых он состоит, в третьей — машинные, двоичные коды, а в четвертой — шестнадцатеричные коды этих символов. Таким образом, текст «КОМПЬЮТЕР» в вычислительной машине представлен двоичным кодом:
1000 1010 1000 1110 1000 1100 1000 1111 1001 1100 1000 1110 1001 0010 1000 0101 1001 00002.
Таблица 4.3.Машинный код текста «КОМПЬЮТЕР»
К | О | М | П | Ь | Ю | Т | Е | Р |
8Е | 8С | 8F | 9С | 9Е |
Этот код можно сокращенно записать в шестнадцатеричном виде:
82 8Е 8С 8F 9С 9Е 92 85 9016.
Следует понимать, что пробелы между четверками двоичных цифр и парами шестнадцатеричных вставляются только для удобства их восприятия, чтения человеком, и в память компьютера они, естественно, не записываются.
Обратите внимание на то, что в табл. 4.2 приведены коды заглавных букв. Строчные буквы имеют другие коды. Например, код буквы «а» имеет вид 101000002, в то время как код буквы «А» — 1000 00002. Не случайно рассматриваемое слово записано именно в таком виде — машинный код слова «КОМПЬЮТЕР» отличается от машинного кода слова «компьютер».
Заметим, что знать кодовую таблицу наизусть совершенно не нужно. Только в очень редких случаях приходится пользоваться приведенными в ней кодами символов. Все необходимые преобразования от символов к их кодам и назад — от кодов к символам — производятся машиной автоматически.
Однако необходимо помнить о том, что существует много различных кодовых таблиц и что различные программы могут использовать для записи текстов различные кодовые таблицы. А в разных кодовых таблицах один и тот же код соответствует разным символам. Так, например, двоичный код 1000 10102 соответствует символу «К» только в так называемой «Гост-альтернативной» кодовой таблице. Именно ее фрагмент приведен в табл. 4.2. А в другой популярной кодовой таблице с названием «Windows 1251» этот же двоичный код служит для обозначения символа «Љ». Следовательно, текст, записанный какой-либо программой в одной кодовой таблице, может быть полностью искажен при его чтении с помощью другой программы. Если приведенный выше код слова «КОМПЬЮТЕР» попытаться прочитать с помощью программы, которая использует кодовую таблицу «Windows 1251», то этот код будет представлен «словом» «ЉЋЊЏњћ'... ђ».
Правомерно задать вопрос: «А зачем нужны различные кодовые таблицы, раз они могут приводить к такого рода путанице?». Дело в том, что если учесть все возможные буквы, встречающиеся в национальных алфавитах европейских стран, все возможные символы, которые встречаются в математических и других специальных текстах, не говоря уже об алфавитах азиатских языков, таких как японский, корейский, китайский, то двухсот пятидесяти шести символов, которые могут быть закодированы описанным выше способом, окажется явно мало. Поэтому и разработано такое большое количество различных кодировочных таблиц.
Необходимо отметить, что в последнее время все шире используется кодовая таблица с названием UNICODE(UNIversal CODE — универсальный код), в которой для кода одного символа отводится два байта, а не один, как в рассмотренных выше таблицах. Сразу же бросается в глаза очевидный недостаток этой кодировки -требуется ровно в два раза больше места в памяти, чем при записи в однобайтных кодировках. Так, для слова «КОМПЬЮТЕР» теперь потребуется восемнадцать байтов, а не девять, как это было ранее. Но в связи с тем, что память становится все более и более дешевой, этот недостаток становится все менее и менее значимым. Кроме того, он с лихвой покрывается очевидным преимуществом: с помощью двух байтов, то есть шестнадцати разрядов, можно закодировать 216=65 536 различных символов, а не 28=256 символов однобайтных кодировок. Такого количества различных символов вполне достаточно для того, чтобы представить практически все встречающиеся во всевозможных текстах символы.
Использование кодовых таблиц для представления различных текстов в памяти компьютера решает только часть проблемы. Если более внимательно посмотреть на текст, скажем, в газете, журнале или книге, то можно заметить, что практически любой текст содержит те или иные элементы оформления. Символы, из которых состоит текст, могут иметь разные размеры и разное начертание. Они могут быть наклонными, подчеркнутыми, выделенными жирным шрифтом и т. д. По-разному могут быть оформлены абзацы и страницы текста. На странице могут находиться номера, колонтитулы, сноски. Все эти, а также и многие другие элементы оформления текста при его записи в память компьютера также нуждаются в определенной кодировке.
Существует много различных форматов — конкретных способов кодирования символов текста и фиксации элементов его оформления. В частности, можно упомянуть общепринятый, «понятный» подавляющему большинству работающих с текстами программ формат ТХТ(от слова text — текст). Этот формат основывается на одной из кодовых таблиц для представления символов текста и практически не содержит никаких элементов его оформления. Заметим, что именно поэтому с этим форматом могут работать очень многие программы. Значительно более сложным, но также довольно популярным является формат RTF(Rich Text Format — богатый текстовый формат), который содержит очень много различных возможностей по оформлению текстов.
Числовая информация
В тех случаях, когда над числовыми данными приходится выполнять какие-либо математические операции, например сложение, вычитание, умножение и т. д., применяются особые принципы кодирования. Так, кодом целого положительного десятичного числа считается его запись в двоичной системе счисления, то есть равное ему двоичное число. Например, кодом десятичного числа +3710 является двоичное число 0010 01012 (или 2516). А число +98410 выглядит как 0000 0011 1101 10012 (или 03 D916). Для отрицательных целых чисел, а также для положительных и отрицательных дробных чисел используются более сложные методы кодирования. Для перехода от десятичной системы счисления к двоичной и назад — от двоичной к десятичной — применяются достаточно сложные специальные правила, на которых мы останавливаться не будем, так как в подавляющем большинстве ситуаций эти переходы осуществляются автоматически.
В случае кодирования числовой информации одного байта для записи числа, как правило, бывает недостаточно, так как с его помощью можно записать числа только из диапазона от 010 до 25610 или же, при использовании более сложного способа кодирования, от -12810 до +12710. Поэтому для записи чисел, не входящих в указанные диапазоны, используется несколько соседних байтов памяти. Обычно это один, два, четыре, восемь или десять байтов. Так, объединение двух байтов позволяет работать с числами от 010 до 65 53510, а объединение четырех — с числами от 010 до 4 294 96729510.
Графическая информация
Под графической информацией можно понимать рисунок, чертеж, фотографию, картинку в книге, изображения на экране телевизора или в кинозале и т. д. Для обсуждения общих принципов кодирования графической информации в качестве конкретного, достаточно общего случая графического объекта выберем изображение на экране телевизора. Это изображение состоит из некоторого количества горизонтальных линий — строк. А каждая строка в свою очередь состоит из элементарных мельчайших единиц изображения — точек, которые принято называть пикселами(picsel — PICture'S ELement — элемент картинки). Весь массив элементарных единиц изображения называют растром(лат. rastrum — грабли). Степень четкости изображения зависит от количества строк на весь экран и количества точек в строке, которые представляют разрешающую способностьэкрана или просто разрешение.Чем больше строк и точек, тем четче и лучше изображение. Достаточно хорошим считается разрешение 640x480, то есть 640 точек на строку и 480 строчек на экран.
Строки, из которых состоит изображение, можно просматривать сверху вниз друг за другом, как бы составив из них одну сплошную линию. После полного просмотра первой строки просматривается вторая, за ней третья, потом четвертая и т. д. до последней строки экрана. Такой способ работы со строками называется строчной разверткой,илисканированием(scan — бегло просматривать; разлагать, развертывать изображение). Так как каждая из строк представляет собой последовательность пикселов, то все изображение, вытянутое в линию, также можно считать линейной последовательностью элементарных точек. В рассматриваемом случае эта последовательность состоит из 640x480=307 200 пикселов.
Вначале рассмотрим принципы кодирования монохромногоизображения, то есть изображения, состоящего из любых двух контрастных цветов — черного и белого, зеленого и белого, коричневого и белого и т. д. Для простоты обсуждения будем считать, что один из цветов — черный, а второй — белый. Тогда каждый пиксел изображения может иметь либо черный, либо белый цвет. Поставив в соответствие черному цвету двоичный код «0», а белому — код «1» (либо наоборот), мы сможем закодировать в одном бите состояние одного пиксела монохромного изображения. А так как байт состоит из 8 бит, то на строчку, состоящую из 640 точек, потребуется 80 байтов памяти, а на все изображение — 38 400 байтов.
Однако полученное таким образом изображение будет чрезмерно контрастным. Реальное черно-белое изображение состоит не только из белого и черного цветов. В него входят множество различных промежуточных оттенков — серый, светлосерый, темно-серый и т. д. Если кроме белого и черного цветов использовать только две дополнительные градации, скажем светло-серый и темно-серый, то для того чтобы закодировать цветовое состояние одного пиксела, потребуется уже два бита. При этом кодировка может быть, например, такой: черный цвет — 002, темно-серый — 012, светло-серый — 102, белый — 112.
Общепринятым на сегодняшний день, дающим достаточно реалистичные монохромные изображения, считается кодирование состояния одного пиксела с помощью одного байта, которое позволяет передавать 256 различных оттенков серого цвета от полностью белого до полностью черного. В этом случае для передачи всего растра из 640x480 пикселов потребуется уже не 38 400, а все 307 200 байтов.
Цветное изображение может формироваться различными способами. Один из них — метод RGB(от слов Red, Green, Blue — красный, зеленый, синий), который опирается на то, что глаз человека воспринимает все цвета как сумму трех основных цветов — красного, зеленого и синего. Например, сиреневый цвет — это сумма красного и синего, желтый цвет — сумма красного и зеленого и т. д. Для получения цветного пиксела в одно и то же место экрана направляется не один, а сразу три цветных луча. Опять упрощая ситуацию, будем считать, что для кодирования каждого из цветов достаточно одного бита. Нуль в бите будет означать, что в суммарном цвете данный основной отсутствует, а единица — присутствует. Следовательно, для кодирования одного цветного пиксела потребуется 3 бита — по одному на каждый цвет. Пусть первый бит соответствует красному цвету, второй – зеленому и третий — синему. Тогда код 1012 обозначает сиреневый цвет — красный есть, зеленого нет, синий есть, а код 1102 — желтый цвет — красный есть, зеленый есть, синего нет. При такой схеме кодирования каждый пиксел может иметь один из восьми возможных цветов. Если же каждый из цветов кодировать с помощью одного байта, как это принято для реалистического монохромного изображения, то появится возможность передавать по 256 оттенков каждого из основных цветов. А всего в этом случае обеспечивается передача 256x256x256=16 777 216 различных цветов, что достаточно близко к реальной чувствительности человеческого глаза. Таким образом, при данной схеме кодирования цвета на изображение одного пиксела требуется 3 байта, или 24 бита, памяти. Этот способ представления цветной графики принято называть режимом True Color(true color — истинный цвет) или полноцветным режимом.
Следует упомянуть еще один часто используемый метод представления цвета, в котором вместо основного цвета используется его дополнение до белого. Если три цвета: красный, зеленый и синий вместе дают белый, то дополнением для красного, очевидно, является сочетание зеленого и синего, то есть голубой цвет. Аналогичным образом дополнением для зеленого является сочетание красного и синего, то есть пурпурный, а для синего — сочетание красного и зеленого, то есть желтый цвет. Эти три цвета — голубой, пурпурный и желтый с добавлением черного образуют основные цвета в системе кодирования, которая называется CMYK(от Cyan — голубой, Magenta — пурпурный, Yellow — желтый и blасК — черный). Этот режим также относится к полноцветным, но для передачи состояния одного пиксела в этом случае требуется 32 бита, или четыре байта, памяти, и может быть передано 4 294 967 295 различных цветов.
Полноцветные режимы требуют очень много памяти. Так, для обсуждавшегося выше растра 640x480 при использовании метода RGB требуется 921 600, а для режима CMYK — 1 228 800 байтов памяти. В целях экономии памяти разрабатываются различные режимы и графические форматы, которые немного хуже передают цвет, но требуют гораздо меньше памяти. В частности, можно упомянуть режим High Color(high color — богатый цвет), в котором для передачи цвета одного пиксела используется 16 битов и, следовательно, можно передать 65 535 цветовых оттенков, а также индексный режим, который базируется на заранее созданной таблице цветовых оттенков. Нужный цвет выбирается из этой таблицы с помощью номера — индекса, который занимает всего один байт памяти.
При записи изображения в память компьютера кроме цвета отдельных точек необходимо фиксировать много дополнительной информации — размеры рисунка, яркость точек и т. д. Конкретный способ кодирования всей требуемой при записи изображения информации образует графический формат. Форматы кодирования графической информации, основанные на передаче цвета каждого отдельного пиксела, из которого состоит изображение, относят к группе растровых или BitMap форматов (bit map — битовая карта).
Наиболее известными растровыми форматами являются BMP, GIF и JPEGформаты. В формате BMP (от BitMaP) задается цветность всех пикселов изображения. При этом можно выбрать монохромный режим с 256 градациями или цветной с 16, 256 или 16 777 216 цветами. Этот формат требует много памяти. В формате GIF (Graphics Interchange Format — графический формат обмена) используются специальные методы сжатия кода, причем поддерживается только 256 цветов. Качество изображения немного хуже, чем в формате BMP, зато код занимает в десятки раз меньше памяти. Формат JPEG (Joint Photographic Experts Group — объединенная группа экспертов по фотографии) использует методы сжатия, основанные на удалении «избыточной» информации и приводящие к потерям некоторых деталей. Однако поддержка 16 777 216 цветов все-таки обеспечивает высокое качество изображения. По требованиям к памяти формат JPEG занимает промежуточное положение между форматами BMP и GIF.
Растровая графика обладает существенным недостатком — изображение, закодированное в одном из растровых форматов, очень плохо «переносит» увеличение или уменьшение его размеров — масштабирование. Для решения задач, в которых приходится часто выполнять эту операцию, были разработаны методы так называемой векторной графики. В векторной графике, в отличие от основанной на точке — пикселе — растровой графики, базовым объектом является линия. При этом изображение формируется из описываемых математическим, векторным способом отдельных отрезков прямых или кривых линий, а также геометрических фигур — прямоугольников, окружностей и т. д., которые могут быть из них получены. Фирма Adobe разработала специальный язык PostScript(от poster script -сценарий плакатов, объявлений, афиш), служащий для описания изображений на базе указанных методов. Кроме того, язык PostScript используется для кодирования текстов при их подготовке к высококачественной печати. Этот язык является основой для нескольких векторных графических форматов. В частности, можно указать форматы PS (PostScript) и EPS (Encapsulated PostScript — инкапсулированный, то есть скрытый, заизолированный PostScript), которые используются для описания как векторных, так и растровых изображений, а также разнообразных текстовых шрифтов. Изображения и тексты, записанные в этих форматах, большинством популярных программ не воспринимаются, они могут просматриваться и печататься только с помощью специализированных аппаратных и программных средств.
ПРИМЕЧАНИЕ
Кроме растровой и векторной графики существует еще и фрактальная графика, в которой формирование изображений целиком основано на математических формулах, уравнениях, описывающих те или иные фигуры, поверхности, тела. При этом само изображение в памяти компьютера фактически не хранится — оно получается как результат обработки некоторых данных. Таким способом могут быть получены даже довольно реалистичные изображения природных ландшафтов.
Звуковая и видеоинформация
Развитие способов кодирования звуковой информации, а также движущихся изображений — анимации и видеозаписей — происходило с запаздыванием относительно рассмотренных выше разновидностей информации. Заметим, что под анимацией понимается похожее на мультипликацию «оживление» изображений, но выполняемое с помощь средств компьютерной графики. Анимация представляет собой последовательность незначительно отличающихся друг от друга, полученных с помощью компьютера картинок, которые фиксируют близкие по времени состояния движения какого-либо объекта или группы объектов. Приемлемые способы хранения и воспроизведения с помощью компьютера звуковых и видеозаписей появились только в девяностых годах двадцатого века. Эти способы работы со звуком и видео получили название мультимедийных технологий.
Звук представляет собой достаточно сложное непрерывное колебание воздуха. Оказывается, что такие непрерывные сигналы можно с достаточной точностью представлять в виде суммы некоторого числа простейших синусоидальных колебаний. Причем каждое слагаемое, то есть каждая синусоида, может быть точно задано некоторым набором числовых параметров — амплитуды, фазы и частоты, которые можно рассматривать как код звука в некоторый момент времени. Такой подход к записи звука называется преобразованием в цифровую форму, оцифровыванием или дискретизацией, так как непрерывный звуковой сигнал заменяется дискретным (то есть состоящим из раздельных элементов) набором значений сигнала в некоторые моменты времени. Количество отсчетов сигнала в единицу времени называется частотой дискретизации. В настоящее время при записи звука в мультимедийных технологиях применяются частоты 8, 11, 22 и 44 кГц. Так, частота дискретизации 44 килогерца означает, что одна секунда непрерывного звучания заменяется набором из сорока четырех тысяч отдельных отсчетов сигнала. Чем выше частота дискретизации, тем лучше качество оцифрованного звука.
Как отмечалось выше, каждый отдельный отсчет можно описать некоторой совокупностью чисел, которые затем можно представить в виде некоторого двоичного кода. Качество преобразования звука в цифровую форму определяется не только частотой дискретизации, но и количеством битов памяти, отводимых на запись кода одного отсчета. Этот параметр принято называть разрядностью преобразования. В настоящее время обычно используется разрядность 8,16 и 24 бит. На описанных выше принципах основывается формат WAV (от WAVeform-audio — волновая форма аудио) кодирования звука. Получить запись звука в этом формате можно от подключаемых к компьютеру микрофона, проигрывателя, магнитофона, телевизора и других стандартно используемых устройств работы со звуком. Однако формат WAV требует очень много памяти. Так, при записи стереофонического звука с частотой дискретизации 44 килогерца и разрядностью 16 бит — параметрами, дающими хорошее качество звучания, — на одну минуту записи требуется около десяти миллионов байтов памяти.
Кроме волнового формата WAV, для записи звука широко применяется формат с названием MIDI (Musical Instruments Digital Interface — цифровой интерфейс музыкальных инструментов). Фактически этот формат представляет собой набор инструкций, команд так называемого музыкального синтезатора — устройства, которое имитирует звучание реальных музыкальных инструментов. Команды синтезатора фактически являются указаниями на высоту ноты, длительность ее звучания, тип имитируемого музыкального инструмента и т. д. Таким образом, последовательность команд синтезатора представляет собой нечто вроде нотной записи музыкальной мелодии. Получить запись звука в формате MIDI можно только от специальных электромузыкальных инструментов, которые поддерживают интерфейс MIDI. Формат MIDI обеспечивает высокое качество звука и требует значительно меньше памяти, чем формат WAV.
Кодирование видеоинформации еще более сложная проблема, чем кодирование звуковой информации, так как нужно позаботиться не только о дискретизации непрерывных движений, но и о синхронизации изображения со звуковым сопровождением. В настоящее время для этого используется формат, которой называется AVI (Audio-Video Interleaved — чередующееся аудио и видео).
Основные мультимедийные форматы AVI и WAV очень требовательны к памяти. Поэтому на практике применяются различные способы компрессии, то есть сжатия звуковых и видеокодов. В настоящее время стандартными стали способы сжатия, предложенные MPEG(Moving Pictures Experts Group — группа экспертов по движущимся изображениям). В частности, стандарт MPEG-1описывает несколько популярных в настоящее время форматов записи звука. Так, например, при записи в формате МР-3 при практически том же качестве звука требуется в десять раз меньше памяти, чем при использовании формата WAV. Существуют специальные программы, которые преобразуют записи звука и