Принцип кодирования символов в персональном компьютере заключается в том что
Данная статья имеет цель собрать воедино и разобрать принципы и механизм работы кодировок текста, подробно этот механизм разобрать и объяснить. Полезна она будет тем, кто только примерно представляет, что такое кодировки текста и как они работают, чем отличаются друг от друга, почему иногда появляются не читаемые символы, какой принцип кодирования имеют разные кодировки.
Чтобы получить детальное понимание этого вопроса придется прочитать и свести воедино не одну статью и потратить довольно значительное время на это. В данном материале же это все собрано воедино и по идее должно сэкономить время и разбор на мой взгляд получился довольно подробный.
О чем будет под катом: принцип работы одно байтовых кодировок (ASCII, Windows-1251 и т.д.), предпосылки появления Unicode, что такое Unicode, Unicode-кодировки UTF-8, UTF-16, их отличия, принципиальные особенности, совместимость и несовместимость разных кодировок, принципы кодирования символов, практический разбор кодирования и декодирования.
Вопрос с кодировками сейчас конечно уже потерял актуальность, но все же знать как они работают сейчас и как работали раньше и при этом не потратить много времени на это думаю лишним не будет.
Кодирование звуковой информации
Решение задач
1. Определить объём памяти для хранения моноаудиофайла, время звучания которого составляет пять минут при частоте дискретизации 44 кГц и глубине кодирования 16 бит.
Решение: Воспользуемся формулой: V = M*I*t
В нашем случае М = 44 кГц = 44000 Гц
I = 16 бит
t = 5 минут,
подставляем в формулу и получаем:
V = 44000*16*5 = 3520000 бит = 430 Кбайт (примерно)
UTF-16
UTF-16 также является кодировкой переменной длинны. Главное ее отличие от UTF-8 состоит в том что структурной единицей в ней является не один а два байта. То есть в кодировке UTF-16 любой символ юникода может быть закодирован либо двумя, либо четырьмя байтами. Давайте для понятности в дальнейшем пару таких байтов я буду называть кодовой парой. Исходя из этого любой символ юникода в кодировке UTF-16 может быть закодирован либо одной кодовой парой, либо двумя.
Начнем с символов которые кодируются одной кодовой парой. Легко посчитать что таких символов может быть 65 535 (2в16), что полностью совпадает с базовым блоком юникода. Все символы находящиеся в этом блоке юникода в кодировке UTF-16 будут закодированы одной кодовой парой (двумя байтами), тут все просто.
символ «o» (латиница) — 00000000 01101111
символ «M» (кириллица) — 00000100 00011100
Теперь рассмотрим символы за пределами базового юникод диапазона. Для их кодирования потребуется уже две кодовые пары (4 байта). И механизм их кодирования немного сложнее, давайте по порядку.
Для начала введем понятия суррогатной пары. Суррогатная пара — это две кодовые пары используемые для кодирования одного символа (итого 4 байта). Для таких суррогатных пар в таблице юникода отведен специальный диапазон от D800 до DFFF. Это значит, что при преобразовании кодовой пары из байтового вида в шестнадцатиричный вы получаете число из этого диапазона, то перед вами не самостоятельный символ, а суррогатная пара.
Чтобы закодировать символ из диапазона 10000 — 10FFFF (то есть символ для которого нужно использовать более одной кодовой пары) нужно:
- из кода символа вычесть 10000(шестнадцатиричное) (это наименьшее число из диапазона 10000 — 10FFFF)
- в результате первого пункта будет получено число не больше FFFFF, занимающее до 20 бит
- ведущие 10 бит из полученного числа суммируются с D800 (начало диапазона суррогатных пар в юникоде)
- следующие 10 бит суммируются с DC00 (тоже число из диапазона суррогатных пар)
- после этого получатся 2 суррогатные пары по 16 бит, первые 6 бит в каждой такой паре отвечают за определение того что это суррогат,
- десятый бит в каждом суррогате отвечает за его порядок если это 1 то это первый суррогат, если 0, то второй
Для примера зашифруем символ, а потом расшифруем. Возьмем древнеперсидскую цифру сто (U+103D5):
- 103D5 — 10000 = 3D5
- 3D5 = 0000000000 1111010101 (ведущие 10 бит получились нулевые приведем это к шестнадцатиричному числу, получим 0 (первые десять), 3D5 (вторые десять))
- 0 + D800 = D800 ( 110110 0 000000000 ) первые 6 бит определяют что число из диапазона суррогатных пар десятый бит (справа) нулевой, значит это первый суррогат
- 3D5 + DC00 = DFD5 ( 110111 1 111010101 ) первые 6 бит определяют что число из диапазона суррогатных пар десятый бит (справа) единица, значит это второй суррогат
- итого данный символ в UTF-16 — 1101100000000000 1101111111010101
- переведем в шестнадцатиричный вид = D822DE88 (оба значения из диапазона суррогатных пар, значит перед нами суррогатная пара)
- 110110 0 000100010 — десятый бит (справа) нулевой, значит первый суррогат
- 110111 1 010001000 — десятый бит (справа) единица, значит второй суррогат
- отбрасываем по 6 бит отвечающих за определение суррогата, получим 0000100010 1010001000 (8A88)
- прибавляем 10000 (меньшее число суррогатного диапазона) 8A88 + 10000 = 18A88
- смотрим в таблице юникода символ U+18A88 = Tangut Component-649. Компоненты тангутского письма.
1. Два текста содержат одинаковое количество символов. Первый текст записан на русском языке, а второй на языке племени нагури, алфавит которого состоит из 16 символов. Чей текст несет большее количество информации?
Решение.
I = К * а (информационный объем текста равен произведению числа символов на информационный вес одного символа).
Т.к. оба текста имеют одинаковое число символов (К), то разница зависит от информативности одного символа алфавита (а).
2 а1 = 32, т.е. а1 = 5 бит,
2 а2 = 16, т.е. а2 = 4 бит.
I1 = К * 5 бит, I2 = К * 4 бит.
Значит, текст, записанный на русском языке в 5/4 раза несет больше информации.
Решение задач
1. Закодируйте с помощью ASCII слово: МИР
Решение: открываем таблицу ASCII,
по таблице ищем букву М, её код 204
по таблице ищем букву И, её код 200
по таблице ищем букву Р, её код 208
Ответ: код слова МИР – 204 200 208
2. Декодируйте тексты, заданные десятичным кодом: 192 203 195 206 208 200 210 204
Решение: открываем таблицу ASCII, в таблице ищем коды и соответствующую им букву:
192 – А; 203 – Л; 195 – Г; 206 – О; 208 – Р; 200 – И; 210 – Т; 204 – М, т. е. получили слово: АЛГОРИТМ
Ответ: 192 203 195 206 208 200 210 204 – АЛГОРТИМ
3. Десятичный код буквы «I» в таблице ASCII равен 73. Не пользуясь таблицей, составьте последовательность кодов, соответствующих слову MIR
Решение: Зная, что все буквы расположены по алфавиту, а цифры по возрастанию делаем следующие выводы: I – 73, J – 74, K – 75, L – 76, M – 77, N – 78, O – 79, P – 80, Q – 81, R – 82
Ответ: MIR – 77 73 82
4. Каков информационный объём текста, содержащего слово МИР:
Зная, что в 16-битовой кодировке 1 символ – 16 бит делаем следующие выводы:
МИР – 3 символа = 48 бит (3*16)
Ответ: а) 48 бит; б) 24 бит.
5. Текст занимает полных 2 страницы. На каждой странице размещается 45 строк по 45 символов. Определить объём оперативной памяти, который займёт этот текст.
Решение: Мы знаем, что 1 символ – 8бит – 1 байт , значит нам нужно найти кол-во символов данного текста: 2 страницы*45 строк*45 символов = 4050 символов = 4050 байт
Ответ: 4050 байт
Кодирование цвета
Рассмотрим, каким образом происходит кодирование цвета точек. Для кодирования цвета применяется принцип разложения цвета на составляющие. Их три: красный цвет (Red, R), синий (Blue, В) и зелёный (Green, G). Смешивая эти составляющие, можно получать различные оттенки и цвета – от белого до черного.
Сколько бит необходимо выделить для каждой составляющей, чтобы при кодировании изображения его качество было наилучшим?
Если рисунок черно-белый, то общепринятым на сегодняшний день считается представление его в виде комбинации точек с 256 градациями серого, т.е. для кодирования точки достаточно 1 байта.
Если же изображение цветное, то с помощью 1 байта можно также закодировать 256 разных оттенков цветов. Этого достаточно для рисования изображений типа тех, что мы видим в мультфильмах. Для изображений же живой природы этого недостаточно. Если увеличить количество байт до двух (16 бит), то цветов станет в два раза больше, т.е. 65536. Это уже похоже на то, что мы видим на фотографиях и на картинках в журналах, но все равно хуже, чем в живой природе. Увеличим еще количество байтов до трех (24 бита). В этом случае можно закодировать 16,5 миллионов различных цветов. Именно такой режим позволяет работать с изображениями наилучшего качества.
Количество бит, необходимое для кодирования цвета точки называется глубиной цвета. Наиболее распространенными значениями глубины цвета являются 4, 8, 16 и 24 бита на точку.
Количество цветов можно вычислить по формуле: N=2 I , где I – глубина цвета.
- 00000000 – минимальная интенсивность, соответствующая полному отсутствию данного цвета;
- 11111111 – максимальная интенсивность, соответствующая присутствию данного цвета целиком;
- 11110000 – средняя интенсивность, соответствующая более светлому оттенку данного цвета.
Оцифровка звука
Звук представляет собой звуковую волну с непрерывно меняющейся амплитудой и частотой. Для человека звук тем громче, чем больше амплитуда сигнала, и тем выше тон, чем больше частота сигнала. Непрерывный сигнал не несет в себе информации, поэтому он должен быть превращен в последовательность двоичных нулей и единиц – двоичный (цифровой) код.
Оцифровку звука выполняет специальное устройство на звуковой плате. Называется оно аналого-цифровой преобразователь (АЦП). Обратный процесс – воспроизведение закодированного звука производится с помощью цифро-аналогового преобразователя (ЦАП).
Весь процесс кодирования и декодирования представить в виде следующей схемы:
Схема кодирования звука:
В процессе кодирования непрерывного звукового сигнала производится дискретизация по времени, или, как говорят, «временная дискретизация». Звуковая волна разбивается на отдельные маленькие временные участки и для каждого участка устанавливается определенная величина амплитуд. Данный метод называется импульсно-амплитудной модуляцией РСМ Code Modulation).
Таким образом, гладкая кривая заменяется на последовательность «ступенек».. Каждой «ступеньке» присваивается значение громкости звука (1, 2, 3). Чем больше «ступенек», тем большее количество уровней громкости выделено в процессе кодирования, и тем большее количество информации будет нести значение каждого уровня и более качественным будет звучание.
Характеристики оцифрованного звука
Качество звука зависит от двух характеристик – глубины кодирования и частоты дискретизации. Рассмотрим эти характеристики.
Глубина кодирования звука (I) — это количество бит, используемое для кодирования различных уровней сигнала или состояний. Тогда общее количество таких состояний или уровней (N) можно вычислить по формуле: N=2 I .
Современные звуковые карты обеспечивают 16-битную глубину кодирования звука, и тогда общее количество различных уровней будет: N=2 16 = 65536.
Частота дискретизации (М) – это количество измерений уровня звукового сигнала в единицу времени. Эта характеристика показывает качество звучания и точность процедуры двоичного кодирования. Измеряется в герцах (Гц). Одно измерение за одну секунду соответствует частоте 1 Гц, 1000 измерений за одну секунду – 1 килогерц (кГц). Частота дискретизации звукового сигнала может принимать значения от 8 до 48 кГц. При частоте 8 кГц качество дискретизированного звукового сигнала соответствует качеству радиотрансляции, а при частоте 48 кГц – качеству звучания аудио-CD.
Высокое качество звучания достигается при частоте дискретизации 44,1 кГц и глубины кодирования звука, равной 16 бит. Для мрачного, приглушенного звука характерны следующие параметры: частота дискретизации – 11 кГц, глубина кодирования – 8 бит.
Unicode
С предпосылками создания общей таблицы для всех в мире символов, разобрались. Теперь собственно, к самой таблице. Unicode — именно эта таблица и есть (это не кодировка, а именно таблица символов). Она состоит из 1 114 112 позиций. Большинство этих позиций пока не заполнены символами, так что вряд ли понадобится это пространство расширять.
Разделено это общее пространство на 17 блоков, по 65 536 символов в каждом. Каждый блок содержит свою группу символов. Нулевой блок — базовый, там собраны наиболее употребляемые символы всех современных алфавитов. Во втором блоке находятся символы вымерших языков. Есть два блока отведенные под частное использование. Большинство блоков пока не заполнены.
Итого емкость символов юникода составляет от 0 до 10FFFF (в шестнадцатиричном виде).
Записываются символы в шестнадцатиричном виде с приставкой «U+». Например первый базовый блок включает в себя символы от U+0000 до U+FFFF (от 0 до 65 535), а последний семнадцатый блок от U+100000 до U+10FFFF (от 1 048 576 до 1 114 111).
Отлично теперь вместо зоопарка национальных кодировок, у нас есть всеобъемлющая таблица, в которой зашифрованы все символы которые нам могут пригодиться. Но тут тоже есть свои недостатки. Если раньше каждый символ был закодирован одним байтом, то теперь он может быть закодирован разным количеством байтов. Например для кодирования всех символов английского алфавита по прежнему достаточно одного байта например тот же символ «o» (англ.) имеет в юникоде номер U+006F, то есть тот же самый номер как и в ASCII — 6F в шестнадцатиричной и 111 в десятеричной. А вот для кодирования символа "U+103D5" (это древнеперсидская цифра сто) — 103D5 в шестнадцатиричной и 66 517 в десятеричной, тут нам потребуется уже три байта.
Решить эту проблему уже должны юникод-кодировки, такие как UTF-8 и UTF-16. Далее речь пойдет про них.
UTF-8 является юникод-кодировкой переменной длинны, с помощью которой можно представить любой символ юникода.
Давайте поподробнее про переменную длину, что это значит? Первым делом надо сказать, что структурной (атомарной) единицей этой кодировки является байт. То что кодировка переменной длинны, значит, что один символ может быть закодирован разным количеством структурных единиц кодировки, то есть разным количеством байтов. Так например латиница кодируется одним байтом, а кириллица двумя байтами.
Немного отступлю от темы, надо написать про совместимость ASCII и UTF
То что латинские символы и основные управляющие конструкции, такие как переносы строк, табуляции и т.д. закодированы одним байтом делает utf-кодировки совместимыми с кодировками ASCII. То есть фактически латиница и управляющие конструкции находятся на тех же самых местах как в ASCII, так и в UTF, и то что закодированы они и там и там одним байтом и обеспечивает эту совместимость.
Давайте возьмем символ «o»(англ.) из примера про ASCII выше. Помним что в таблице ASCII символов он находится на 111 позиции, в битовом виде это будет 01101111 . В таблице юникода этот символ — U+006F что в битовом виде тоже будет 01101111 . И теперь так, как UTF — это кодировка переменной длины, то в ней этот символ будет закодирован одним байтом. То есть представление данного символа в обеих кодировках будет одинаково. И так для всего диапазона символов от 0 до 128. То есть если ваш документ состоит из английского текста то вы не заметите разницы если откроете его и в кодировке UTF-8 и UTF-16 и ASCII (прим. в UTF-16 такие символы все равно будут закодированы двумя байтами, по этому вы не увидите разницы, если ваш редактор будет игнорировать нулевые байты), и так до момента пока вы не начнете работать с национальным алфавитом.
Сравним на практике как будет выглядеть фраза «Hello мир» в трех разных кодировках: Windows-1251 (русская кодировка), ISO-8859-1 (кодировка западно-европейских языков), UTF-8 (юникод-кодировка). Суть данного примера состоит в том что фраза написана на двух языках. Посмотрим как она будет выглядеть в разных кодировках.
В кодировке ISO-8859-1 нет таких символов «м», «и» и «р».
Теперь давайте поработаем с кодировками и разберемся как преобразовать строку из одной кодировки в другую и что будет если преобразование неправильное, или его нельзя осуществить из за разницы в кодировках.
Будем считать что изначально фраза была записана в кодировке Windows-1251. Исходя из таблицы выше запишем эту фразу в двоичном виде, в кодировке Windows-1251. Для этого нам потребуется всего только перевести из десятеричной или шестнадцатиричной системы (из таблицы выше) символы в двоичную.
01001000 01100101 01101100 01101100 01101111 00100000 11101100 11101000 11110000
Отлично, вот это и есть фраза «Hello мир» в кодировке Windows-1251.
Теперь представим что вы имеете файл с текстом, но не знаете в какой кодировке этот текст. Вы предполагаете что он в кодировке ISO-8859-1 и открываете его в своем редакторе в этой кодировке. Как сказано выше с частью символов все в порядке, они есть в этой кодировке, и даже находятся на тех же местах, но вот с символами из слова «мир» все сложнее. Этих символов в этой кодировке нет, а на их местах в кодировке ISO-8859-1 находятся совершенно другие символы. А конкретно «м» — позиция 236, «и» — 232. «р» — 240. И на этих позициях в кодировке ISO-8859-1 находятся следующие символы позиция 236 — символ "ì", 232 — "è", 240 — "ð"
Значит фраза «Hello мир» закодированная в Windows-1251 и открытая в кодировке ISO-8859-1 будет выглядеть так: «Hello ìèð». Вот и получается что эти две кодировки совместимы лишь частично, и корректно перекодировать строку из одной кодировке в другую не получится, потому что там просто напросто нет таких символов.
Тут и будут необходимы юникод-кодировки, а конкретно в данном случае рассмотрим UTF-8. То что символы в ней могут быть закодированы разным количеством байтов от 1 до 4 мы уже выяснили. Теперь стоит сказать что с помощью UTF могут быть закодированы не только 256 символов, как в двух предыдущих, а вобще все символы юникода
Работает она следующим образом. Первый бит каждого байта кодирующего символ отвечает не за сам символ, а за определение байта. То есть например если ведущий (первый) бит нулевой, то это значит что для кодирования символа используется всего один байт. Что и обеспечивает совместимость с ASCII. Если внимательно посмотрите на таблицу символов ASCII то увидите что первые 128 символов (английский алфавит, управляющие символы и знаки препинания) если их привести к двоичному виду, все начинаются с нулевого бита (будьте внимательны, если будете переводить символы в двоичную систему с помощью например онлайн конвертера, то первый нулевой ведущий бит может быть отброшен, что может сбить с толку).
01001000 — первый бит ноль, значит 1 байт кодирует 1 символ -> «H»
01100101 — первый бит ноль, значит 1 байт кодирует 1 символ -> «e»
Если первый бит не нулевой то символ кодируется несколькими байтами.
Для двухбайтовых символов первые три бита должны быть такие — 110
110 10000 10 111100 — в начале 110, значит 2 байта кодируют 1 символ. Второй байт в таком случае всегда начинается с 10. Итого отбрасываем управляющие биты (начальные, которые выделены красным и зеленым) и берем все оставшиеся ( 10000111100 ), переводим их в шестнадцатиричный вид (043С) -> U+043C в юникоде равно символ «м».
для трех-байтовых символов в первом байте ведущие биты — 1110
1110 1000 10 000111 10 1010101 — суммируем все кроме управляющих битов и получаем что в 16-ричной равно 103В5, U+103D5 — древнеперситдская цифра сто ( 10000001111010101 )
для четырех-байтовых символов в первом байте ведущие биты — 11110
11110 100 10 001111 10 111111 10 111111 — U+10FFFF это последний допустимый символ в таблице юникода ( 100001111111111111111 )
Теперь, при желании, можем записать нашу фразу в кодировке UTF-8.
Единицы измерения информации
Таким образом, можно утверждать: информацию можно измерять в битах, то есть в количестве двоичных разрядов. Бит является наименьшей единицей измерения количества информации.
Предпосылки Unicode
Первые 7 бит (128 символов 2 7 =128) в этой кодировке были отданы под символы латинского алфавита, управляющие символы (такие как переносы строк, табуляция и т.д.) и грамматические символы. Остальные отводились под национальные языки. То есть получилось что первые 128 символов всегда одинаковые, а если хочешь закодировать свой родной язык пожалуйста, используй оставшуюся емкость. Собственно так и появился огромный зоопарк национальных кодировок. И теперь сами можете представить, вот например я находясь в России беру и создаю текстовый документ, у меня по умолчанию он создается в кодировке Windows-1251 (русская кодировка использующаяся в ОС Windows) и отсылаю его кому то, например в США. Даже то что мой собеседник знает русский язык, ему не поможет, потому что открыв мой документ на своем компьютере (в редакторе с дефолтной кодировкой той же самой ASCII) он увидит не русские буквы, а кракозябры. Если быть точнее, то те места в документе которые я напишу на английском отобразятся без проблем, потому что первые 128 символов кодировок Windows-1251 и ASCII одинаковые, но вот там где я написал русский текст, если он в своем редакторе не укажет правильную кодировку будут в виде кракозябр.
Думаю проблема с национальными кодировками понятна. Собственно этих национальных кодировок стало очень много, а интернет стал очень широким, и в нем каждый хотел писать на своем языке и не хотел чтобы его язык выглядел как кракозябры. Было два выхода, указывать для каждой страницы кодировки, либо создать одну общую для всех символов в мире таблицу символов. Победил второй вариант, так создали Unicode таблицу символов.
Общие понятия о графической информации
Графическая информация представляет собой изображение, сформированное из определенного числа точек – пикселей. Добавим к этой информации новые сведения. Процесс разбиения изображения на отдельные маленькие фрагменты (точки) называется пространственной дискретизацией. Ее можно сравнить с построением рисунка из мозаики. При этом каждой мозаике (точке) присваивается код цвета.
От количества точек зависит качество изображения. Оно тем выше, чем меньше размер точки и соответственно большее их количество составляет изображение. Такое количество точек называется разрешающей способностью и обычно существуют четыре основных значений этого параметра: 640x480, 800x600, 1024x768, 1280x1024.
Качество изображения зависит также от количества цветов, т.е. от количества возможных состояний точек изображения, т.к. при этом каждая точка несет большее количество информации. Используемый набор цветов образует палитру цветов.
Представление текстовой информации в компьютере. Кодовые таблицы
Каждому символу ставится в соответствие двоичное число, причем таким образом, что чем дальше символ расположен от начала алфавита, тем больше значение двоичного числа, которое является кодом данного символа. Сколько разрядов (бит) требуется, чтобы закодировать все буквы, знаки препинания, математические и специальные символы? Легко подсчитать:
- кириллица (большие и малые буквы) - 66;
- латинские (большие и малые буквы) - 52;
- цифры - 10;
- знаки препинания (. , : ; ‘ « ! ? -) - 9;
- знаки математических операций (+ - * / ^) - 5.
Альтернативные системы кодирования кириллицы
- Система кодирования КОИ-7 (код обмена информацией, семизначный), действовавшая в СССР. Была вскоре вытеснена американским кодом ASCII во вторую, расширенную часть системы кодирования с кодами от 128 по 255.
- Кодировка Windows-1251. Была введена извне компанией Microsoft Так как программный продукт этой компании – операционная система Windows глубоко закрепилась и широко распространилась, то кодировка Windows-1251 получила широкое применение на компьютерах, работающих под управлением именно этой операционной системы.
- Кодировка КОИ-8 широко распространена на территории России и в российском секторе Интернета.
- Кодировка ISO (International Standard Organization — Международный институт стандартизации) – содержит символы русского алфавита, но на практике используется редко.
- Кодировка ГОСТ – альтернативная. Действует на компьютерах в операционных системах MS-DOS.
Таблица Unicode разделена на несколько областей. Область с кодами от 0000 до 007F содержит символы набора Latin 1 (младшие байты соответствуют кодировке ISO 8859-1). Далее идут области, в которых расположены знаки различных письменностей, а также знаки пунктуации и технические символы. Часть кодов зарезервирована для использования в будущем (29000). 6000 кодовых комбинаций оставлено программистам.
Символам кириллицы выделены коды в диапазоне от 0400 до 0451.
Использование Unicode значительно упрощает создание многоязычных документов, публикаций и программных приложений.
Кодирование графической информации
Небольшой практикум ASCII
Возможно покажется элементарщиной, но раз уж решил объяснять все и подробно, то это надо.
Вот таблица символов ASCII:
Тут имеем 3 колонки:
- номер символа в десятичном формате
- номер символа в шестнадцатиричном формате
- представление самого символа.
Единая форма кодирования и измерения количества информации
Как измерять количество информации? Для этого нужно иметь универсальный способ, позволяющий представить любую ее форму (текстовую, графическую и др.) в едином стандартном виде.
За такой способ принята так называемая двоичная форма представления информации. Она заключается в записи любой информации в виде последовательности только двух символов: 0 и 1 (то есть в виде двоичных чисел) и с технической точки зрения наиболее проста и удобна (есть ток/нет тока, намагничено/размагничено, высокое напряжение/низкое напряжение).
Рассмотрим сначала одноразрядное двоичное число – бит. Оно может принимать два различных значения: 0 и 1
Если с помощью одноразрядного числа попробовать закодировать какую-либо информацию (например, ответ на вопрос «идет ли дождь?»), то мы успешно справимся с поставленной задачей, поскольку количество различных вариантов кодирования в данном случае равно двум (0-не идет, 1-идет).
К = 2 n °, где n – число разрядов двоичного числа.
В общем случае, верно, что чем больше различных видов однотипной информации требуется закодировать, тем больше разрядов двоичного числа (бит) требуется.
Кодирование звуковой информации
Мир наполнен самыми разнообразными звуками: тиканье часов и гул моторов, завывание ветра и шелест листьев, пение птиц и голоса людей. О том, как рождаются звуки и что они собой представляют люди начали догадываться очень давно. Еще древнегреческий философ и ученый - энциклопедист Аристотель, исходя из наблюдений, объяснял природу звука, полагая, что звучащее тело создает попеременное сжатие и разрежение воздуха. Так, колеблющаяся струна то разряжает, то уплотняет воздух, а из-за упругости воздуха эти чередующиеся воздействия передаются дальше в пространство - от слоя к слою, возникают упругие волны. Достигая нашего уха, они воздействуют на барабанные перепонки и вызывают ощущение звука.
На слух человек воспринимает упругие волны, имеющие частоту где-то в пределах от 16 Гц до 20 кГц (1 Гц - 1 колебание в секунду). В соответствии с этим упругие волны в любой среде, частоты которых лежат в указанных пределах, называют звуковыми волнами или просто звуком. В учении о звуке важны такие понятия как тон и тембр звука. Всякий реальный звук, будь то игра музыкальных инструментов или голос человека, - это своеобразная смесь многих гармонических колебаний с определенным набором частот.
Колебание, которое имеет наиболее низкую частоту, называют основным тоном, другие - обертонами.
Тембр - разное количество обертонов, присущих тому или иному звуку, которое придает ему особую окраску. Отличие одного тембра от другого обусловлено не только числом, но и интенсивностью обертонов, сопровождающих звучание основного тона. Именно по тембру мы легко можем отличить звуки рояля и скрипки, гитары и флейты, узнать голос знакомого человека.
Музыкальный звук можно характеризовать тремя качествами: тембром, т. е. окраской звука, которая зависит от формы колебаний, высотой, определяющейся числом колебаний в секунду (частотой), и громкостью, зависящей от интенсивности колебаний.
Компьютер широко применяют в настоящее время в различных сферах. Не стала исключением и обработка звуковой информации, музыка. До 1983 года все записи музыки выходили на виниловых пластинках и компакт-кассетах. В настоящее время широкое распространение получили компакт-диски. Если имеется компьютер, на котором установлена студийная звуковая плата, с подключенными к ней MIDI-клавиатурой и микрофоном, то можно работать со специализированным музыкальным программным обеспечением.
Условно его можно разбить на несколько видов:
Фонограмма и ее временная дискретизация
а | К | Применение |
8 | 256 | Недостаточно для достоверного восстановления исходного сигнала, так как будут большие нелинейные искажения. Применяют в основном в мультимедийных приложениях, где не требуется высокое качество звука |
16 | 65536 | Используется при записи компакт-дисков,так как нелинейные искажения сводятся к минимуму. |
20 | 1048576 | Где требуется высококачественная оцифровка звука. |
Но эти данные истинны только для того сигнала, чей максимальный уровень 0 дБ. Если нужно семплировать сигнал с уровнем 6 дБ с разрядностью 16 бит, то для кодирования его амплитуды будет оставаться на самом деле только 15 бит. Если сигнал с уровнем 12 дБ, то 14 бит. С увеличением уровня сигнала увеличивается разрядность его оцифровки, а значит , уменьшается уровень нелинейных искажений (В технической литературе существует термин «шум квантования»), в свою очередь каждые 6 дБ уменьшающие уровень будут «съедать» 1 бит.
В настоящее время появился новый бытовой цифровой формат Audio DVD, который использует разрядность 24 бита и частоту семплирования 96 кГц. С его помощью можно избежать выше рассмотренного недостатка 16-битного кодирования.
На современные цифровые звуковые устройства устанавливаются 20-битные преобразователи. Звук так и остается 16-битным, преобразователи повышенной разрядности устанавливают для улучшения качества записи на низких уровнях. Их принцип работы заключается в следующем: исходный аналоговый сигнал оцифровывается с разрядностью 20 бит. Затем цифровой сигнальный процессор DSPП онижает его разрядность до 16 бит. При этом используется специальный алгоритм вычислений, при помощи которого можно снизить искажения низкоуровневых сигналов. Обратный процесс наблюдается при цифро-аналоговом преобразовании: разрядность повышается с 16 до 20 бит при использовании специального алгоритма, который позволяет более точно определять значения амплитуды. То есть звук остается 16-разрядным, но имеется общее улучшение качества звучания.
Задачи.
1. Подсчитать, сколько места будет занимать одна минута цифрового звука на жестком диске или любом другом цифровом носителе, записанного с частотой
а) 44.1 кГц;
б) 11 кГц;
в) 22 кГц;
г) 32 кГц
и разрядностью 16 бит.
Решение.
а) Если записывают моносигнал с частотой 44.1 кГц, разрядностью 16 бит (2 байта), то каждую минуту аналого-цифровой преобразователь будет выдавать 441000 * 2 * 60 = 529000 байт (примерно 5 Мб) данных об амплитуде аналогового сигнала, который в компьютере записываются на жесткий диск.
Если записывают стереосигнал, то 1058000 байт (около 10 Мб)
б) для частот 11, 22, 32 кГц расчеты производятся аналогично.
2. Какой информационный объем имеет моноаудиофайл, длительность звучания которого 1 секунда, при среднем качестве звука (16 бит, 24 кГц)?
Решение.
16 бит * 24000 = 384000 бит = 48000 байт = 47 кБайт
3. Рассчитайте объем стереоаудиофайла длительностью 20 секунд при 20-битном кодировании и частоте дискретизации 44.1 кГц.
Решение.
20 бит * 20 * 44100 * 2 = 35280000 бит = 4410000 байт = 4.41 Мб
К = 2 8 = 256.
Самостоятельная работа ( а) - первый вариант, б) - второй).
1. Привести пример
а) аналогового способа представления звуковой информации;
б) дискретного способа представления звуковой информации.
2. Что называется
а) частотой дискретизации (семплирования);
б) семплом.
Процессор берёт команды программ и данные для обработки из памяти. Память является электронным устройством и состоит из микросхем, которые, в свою очередь, состоят из тысяч более мелких электронных компонентов. Подобные электронные компоненты могут находиться только в двух состояниях — «включено» или «выключено», что соответствует двум цифрам двоичной системы счисления 1 или 0 или одному биту.
Таким образом, любая информация в памяти компьютера представляется в виде последовательности битов, каждый из которых находится в одном из допустимых состояний.
При использовании одного бита можно представить в памяти компьютера только два различных символа. Одному из них будет сопоставлен двоичный код — ноль, а второму — единица.
Если мы увеличим длину кодовой комбинации символа до двух цифр, то получим следующие коды: 00, 01, 10, 11. Таким образом, в памяти компьютера можно будет представить четыре различных символа. При последовательном наращивании длины двоичной кодовой комбинации увеличивается количество символов, которые могут быть закодированы. Кодом длиной в три символа представляются 8 различных символов (000, 001, 010, 011, 100, 101, 110, 111) и т. д.
Текстовая информация состоит из букв, цифр, знаков препинания, специальных символов, таких, как пробел, символ перевода строки и др. Для кодирования текстовой информации в компьютере используются равномерные коды. В случае, когда код каждого символа занимает в памяти компьютера 1 байт, или 8 бит, общее количество символов, которые можно закодировать, равно 2 8 = 256. Если кодовое слово состоит из двух байтов, можно закодировать 2 16 = 65 536 символов.
Существуют стандартные таблицы кодов. Они могут использовать один или два байта для кодирования одного символа.
Широко используется таблица кодов, известная как стандарт ASCII (American Standart Code for Information Interchange — Американский стандартный код для обмена информацией), использующая один байт для кодирования одного символа. ASCII представляет собой кодировку для представления десятичных цифр, символов латинского и национального алфавитов, знаков препинания, символов арифметических операций и управляющих символов. Управляющие символы называют непечатаемыми символами, к ним относятся такие, как «перевод строки» (код символа 10), «возврат каретки» (код 13) и др.
Первая половина кодовой таблицы содержит стандартные символы ASCII (символы с кодами 0 — 127), они одинаковые во всех странах.
Коды в таблице записаны в шестнадцатеричной системе счисления, как принято в информатике. Код символа А, например, 4116 = 6510. Таблицу кодов не надо запоминать, но следует помнить последовательность символов:
- знаки препинания и арифметических операций;
- цифры от 0 до 9;
- прописные символы латинского алфавита;
- строчные символы латинского алфавита.
Вторая часть кодовой таблицы (символы с кодами 128 — 255) называют расширенными кодами ASCII. В расширенные коды ASCII включают символы национальных алфавитов, например символы кириллицы. Но даже с учётом этих дополнительных знаков алфавиты многих языков не удаётся охватить при помощи 256 знаков. По этой причине существуют различные варианты кодировки ASCII, включающие символы разных языков.
Отсутствие согласованных стандартов привело к появлению различных кодовых таблиц (вернее, различных вторых частей кодовых таблиц) для кодирования символов кириллицы, среди которых
- международный стандарт ISO 8859;
- кодовая таблица фирмы Microsoft CP-1251 (кодировка Windows);
- кодовая таблица, применяемая в ОС Unix KOI8R и др.
По этой причине тексты на русском языке, набранные с использованием одной кодовой таблицы, невозможно прочитать при использовании другой кодовой таблицы.
В настоящее время в компьютерах широко применяется стандарт кодирования Unicode (Юникод), в котором для кодирования одного символа отводятся один байт, два байта или четыре байта. Первые 128 символов Юникода совпадают с символами ASCII. Остальная часть кодовой таблицы включает символы, используемые в основных языках мира.
Изображение на экране монитора формируется набором экранных точек —пикселей. Каждая экранная точка имеет свой цвет. Картинка на экране — это отображение информации из памяти компьютера.
Первые мониторы были монохромными. Точка на экране монохромного монитора может быть только светлой (белой) или тёмной (чёрной). Для кодирования цвета пикселя используется один бит памяти, значение 1 соответствует белому цвету, 0 — чёрному. Подобные экраны используются в недорогих сотовых телефонах, системах видеонаблюдения и других устройствах.
Каждый пиксель современного дисплея определяется компонентами трёх основных цветов: красного (Red, R), зелёного (Green, G) и синего (Blue, B). В памяти необходимо сохранять информацию о состоянии каждой точки изображения, т. е. о состоянии каждой из её трёх составляющих. Управление яркостью каждой составляющей позволяет влиять на цвет экранной точки.
Цветовой моделью называется правило представления цвета в виде наборов чисел (обычно трёх-четырёх). В компьютерной графике используется несколько видов цветовых моделей.
Рассмотрим цветовую модель, связанную с представлением пикселя составляющими красного, зелёного и синего цветов. Она называется RGB(Red-Green-Blue)-моделью.
В RGB-модели происходит сложение цветов и добавление их к чёрному цвету экрана, поэтому она называется аддитивной (additive). Разные цвета образуются смешиванием трёх основных цветов в разных пропорциях, т. е. с разными яркостями.
Глубина цвета (color depth) — это число бит, используемых для представления каждого пикселя изображения.
В модели RGB каждый цвет может кодироваться тремя байтами (режимTrueColor). Каждый байт отвечает за яркость красной, зеленой и синей составляющей пикселя соответственно. Таким образом, глубина цвета в режиме TrueColor составляет 24 бита. Изображения, пиксели которых закодированы таким способом, называются 24-битными изображениями.
Чтобы указать цвет пикселя в модели RGB, достаточно перечислить разделённые точками яркости каждой составляющей, например: 255.255.0 — код жёлтой точки, записанный при помощи десятичных кодов яркостей. Значения яркости варьируются от 0 («выключено») до 255 («включено на максимум»). Если значения яркостей всех трёх составляющих равны, получим оттенки серого цвета.
Если изменять интенсивность каждого цвета для смешанных цветов, например задать цвет 127.127.0, то мы получим на экране болотный цвет, а не более тёмный оттенок жёлтого цвета, как можно было ожидать. Это связано с тем, что человеческий глаз более чувствителен к зелёному цвету. Чем ниже интенсивности составляющих, тем темнее цвет на экране. И наоборот — чем выше интенсивности цветов, тем светлее оттенки.
Модель CMY использует также три основных цвета: голубой (Cyan), фуксин (Magenta, иногда его называют «пурпурный» или «малиновый») и жёлтый (Yellow). Эти цвета описывают отражённый от белой бумаги свет трёх основных цветов RGB-модели.
Модель CMY является субтрактивной (основанной на вычитании) цветовой моделью. Краситель, нанесённый на белую бумагу, вычитает часть спектра из падающего белого света. Например, на поверхность бумаги нанесли жёлтый (Yellow) краситель. Теперь синий свет, падающий на бумагу, полностью поглощается. Таким образом, жёлтый носитель вычитает синий свет из падающего белого.
При смешении двух субтрактивных составляющих результирующий цвет затемняется, а при смешении всех трёх должен получиться чёрный цвет. Но при использовании реальных полиграфических красок получается не чёрный, а неопределённый тёмный цвет. Поэтому к трём основным цветам CMY-модели добавляют чёрный (Black) и получают новую цветовую модель CMYK.
Количество различных цветов K и количество битов для их кодирования (глубина цвета) L связаны формулой K = 2 L . При L = 24 бита можно закодировать 2 24 = 16 777 216 различных цветов.
Если известно разрешение экрана (количество точек по горизонтали и вертикали) и глубина цвета, можно определить объём видеопамяти для хранения одного кадра (одной страницы) изображения. Например, при разрешении экрана 640 × 480 и использовании 24 бит на точку объём видеопамяти равен 640 ∙ 480 ∙ 24 = 7 372 800 бит = 900 Кбайт.
Все компьютерные изображения делятся на два больших класса — растровые и векторные. Различие между ними определяет способ хранения изображений в памяти компьютера.
Звук представляет собой звуковую волну с непрерывно меняющейся амплитудой и частотой. Чем больше амплитуда сигнала, тем громче звук; чем больше частота сигнала (число колебаний в секунду), тем выше тон.
В настоящее время существует два основных способа записи звука —аналоговый (непрерывный) и цифровой (дискретный). Виниловая пластинка является примером аналогового хранения звуковой информации, так как звуковая дорожка изменяет свою форму непрерывно. Компакт-диски являются примером цифрового хранения звуковой информации, так как звуковая дорожка компакт-диска содержит участки с различной отражающей способностью.
Для того чтобы записать звук на какой-нибудь носитель, его нужно преобразовать в электрический сигнал. Это делается с помощью микрофона. Микрофоны имеют мембрану, которая колеблется под воздействием звуковых волн. К мембране присоединена катушка, перемещающаяся синхронно с мембраной в магнитном поле. В катушке возникает переменный электрический ток. Так звуковые волны преобразуются микрофоном в электрический ток переменного напряжения, который представляет собой аналоговый сигнал. Применительно к электрическому сигналу термин «аналоговый» обозначает, что этот сигнал непрерывен по времени и амплитуде (см. рис. 11а).
Для того чтобы компьютер мог обрабатывать звук, непрерывный сигнал должен быть превращён в последовательность электрических импульсов (двоичных нулей и единиц). В процессе кодирования непрерывного звукового сигнала производится его дискретизация по времени. Дискретизация — это преобразование непрерывных сигналов в набор дискретных значений, каждому из которых присваивается число — кодовое слово.
Для дискретизации надо несколько раз в секунду измерять величину аналогового сигнала и кодировать её, например, с помощью 256 значений.
Фактически плоскость, на которой изображён непрерывный сигнал, разбивается вертикальными и горизонтальными линиями (см. рис. 11б), и считается, что график проходит строго через узлы полученной сетки, непрерывная плавная линия заменяется ломаной.
Дискретизация по времени соответствует разбиению вертикальными линиями. Она характеризуется частотой дискретизации. Частота дискретизации звукового компакт-диска 44,1 кГц, DVD — примерно 96 кГц. Это значит, что величина аналогового сигнала измеряется 44 100 и 96 000 раз в секунду соответственно. Если кодируется стереозвук, отдельно кодируются два канала.
Горизонтальное разбиение также важно: чем меньше расстояние между горизонтальными линиями сетки, тем качественнее будет цифровой звук. Количество линий сетки определяет количество уровней звука, поэтому горизонтальное разбиение называется квантованием по уровню. Для кодирования полученных значений уровней используют двоичные числа. Количество используемых для кодирования бит называется глубиной звука. Если глубина звука 8 бит или 16 бит, можно закодировать соответственно 2 8 = 256 уровней или 2 16 = 65 536 уровней сигналов. Это значит, что интервал от нулевого до максимального напряжения аналогового сигнала разбивается на 256 или 65 536 уровней, что соответствует количеству высот звука (тонов).
Преобразование непрерывной звуковой волны в последовательность звуковых импульсов различной амплитуды производится с помощью аналого-цифрового преобразователя (АЦП), размещённого на звуковой плате.
С помощью специальных программных средств (редакторов звукозаписей) открываются широкие возможности по созданию, редактированию и прослушиванию звуковых файлов. Но, как видно из примера, звуковые файлы занимают очень много места в памяти. Поэтому используются методы сжатия звуковых файлов. Качество музыки после сжатия несколько ухудшается, но это практически незаметно, так как при разработке алгоритмов сжатия учитываются законы восприятия музыки человеком.
Кодирование текстовой информации
Одна и та же информация может быть представлена (закодирована) в нескольких формах. C появлением компьютеров возникла необходимость кодирования всех видов информации, с которыми имеет дело и отдельный человек, и человечество в целом. Но решать задачу кодирования информации человечество начало задолго до появления компьютеров. Грандиозные достижения человечества - письменность и арифметика - есть не что иное, как система кодирования речи и числовой информации. Информация никогда не появляется в чистом виде, она всегда как-то представлена, как-то закодирована.
Двоичное кодирование – один из распространенных способов представления информации. В вычислительных машинах, в роботах и станках с числовым программным управлением, как правило, вся информация, с которой имеет дело устройство, кодируется в виде слов двоичного алфавита.
Начиная с конца 60-х годов, компьютеры все больше стали использоваться для обработки текстовой информации, и в настоящее время основная доля персональных компьютеров в мире (и большая часть времени) занята обработкой именно текстовой информации. Все эти виды информации в компьютере представлены в двоичном коде, т. е. используется алфавит мощностью два (всего два символа 0 и 1). Связано это с тем, что удобно представлять информацию в виде последовательности электрических импульсов: импульс отсутствует (0), импульс есть (1).
Такое кодирование принято называть двоичным, а сами логические последовательности нулей и единиц - машинным языком.
С точки зрения ЭВМ текст состоит из отдельных символов. К числу символов принадлежат не только буквы (заглавные или строчные, латинские или русские), но и цифры, знаки препинания, спецсимволы типа "=", "(", "&" и т.п. и даже (обратите особое внимание!) пробелы между словами.
Т радиционно для кодирования одного символа используется количество информации, равное 1 байту, т. е. I = 1 байт = 8 бит. При помощи формулы, которая связывает между собой количество возможных событий К и количество информации I, можно вычислить сколько различных символов можно закодировать (считая, что символы - это возможные события): К = 2 I = 2 8 = 256, т. е. для представления текстовой информации можно использовать алфавит мощностью 256 символов.
Такое количество символов вполне достаточно для представления текстовой информации, включая прописные и строчные буквы русского и латинского алфавита, цифры, знаки, графические символы и пр.
Кодирование заключается в том, что каждому символу ставится в соответствие уникальный десятичный код от 0 до 255 или соответствующий ему двоичный код от 00000000 до 11111111. Таким образом, человек различает символы по их начертанию, а компьютер - по их коду.
Удобство побайтового кодирования символов очевидно, поскольку байт - наименьшая адресуемая часть памяти и, следовательно, процессор может обратиться к каждому символу отдельно, выполняя обработку текста. С другой стороны, 256 символов – это вполне достаточное количество для представления самой разнообразной символьной информации.
В процессе вывода символа на экран компьютера производится обратный процесс — декодирование, то есть преобразование кода символа в его изображение. Важно, что присвоение символу конкретного кода — это вопрос соглашения, которое фиксируется в кодовой таблице.
Теперь возникает вопрос, какой именно восьмиразрядный двоичный код поставить в соответствие каждому символу. Понятно, что это дело условное, можно придумать множество способов кодировки.
Все символы компьютерного алфавита пронумерованы от 0 до 255. Каждому номеру соответствует восьмиразрядный двоичный код от 00000000 до 11111111. Этот код просто порядковый номер символа в двоичной системе счисления.
Виды таблиц кодировок
Таблица, в которой всем символам компьютерного алфавита поставлены в соответствие порядковые номера, называется таблицей кодировки.
Для разных типов ЭВМ используются различные таблицы кодировки.
В качестве международного стандарта принята кодовая таблица ASCII (American Standard Code for Information Interchange - Американский стандартный код для информационного обмена), кодирующая первую половину символов с числовыми кодами от 0 до 127 ( коды от 0 до 32 отведены не символам, а функциональным клавишам).
Таблица кодов ASCII делится на две части.
Международным стандартом является лишь первая половина таблицы, т.е. символы с номерами от 0 (00000000), до 127 (01111111).
Структура таблицы кодировки ASCII
Порядковый номер
Символы с номерами от 0 до 31 принято называть управляющими.
Их функция – управление процессом вывода текста на экран или печать, подача звукового сигнала, разметка текста и т.п.
Стандартная часть таблицы (английский). Сюда входят строчные и прописные буквы латинского алфавита, десятичные цифры, знаки препинания, всевозможные скобки, коммерческие и другие символы.
Символ 32 - пробел, т.е. пустая позиция в тексте.
Все остальные отражаются определенными знаками.
Альтернативная часть таблицы (русская).
Вторая половина кодовой таблицы ASCII, называемая кодовой страницей (128 кодов, начиная с 10000000 и кончая 11111111), может иметь различные варианты, каждый вариант имеет свой номер.
Кодовая страница в первую очередь используется для размещения национальных алфавитов, отличных от латинского. В русских национальных кодировках в этой части таблицы размещаются символы русского алфавита.
Обращается внимание на то, что в таблице кодировки буквы (прописные и строчные) располагаются в алфавитном порядке, а цифры упорядочены по возрастанию значений. Такое соблюдение лексикографического порядка в расположении символов называется принципом последовательного кодирования алфавита.
Для букв русского алфавита также соблюдается принцип последовательного кодирования.
От начала 90-х годов, времени господства операционной системы MS DOS, остается кодировка CP866 ("CP" означает "Code Page", "кодовая страница").
Компьютеры фирмы Apple, работающие под управлением операционной системы Mac OS, используют свою собственную кодировку Mac.
Кроме того, Международная организация по стандартизации (International Standards Organization, ISO) утвердила в качестве стандарта для русского языка еще одну кодировку под названием ISO 8859-5.
Наиболее распространенной в настоящее время является кодировка Microsoft Windows, обозначаемая сокращением CP1251. Введена компанией Microsoft; с учетом широкого распространения операционных систем (ОС) и других программных продуктов этой компании в Российской Федерации она нашла широкое распространение.
С конца 90-х годов проблема стандартизации символьного кодирования решается введением нового международного стандарта, который называется Unicode.
Это 16-разрядная кодировка, т.е. в ней на каждый символ отводится 2 байта памяти. Конечно, при этом объем занимаемой памяти увеличивается в 2 раза. Но зато такая кодовая таблица допускает включение до 65536 символов. Полная спецификация стандарта Unicode включает в себя все существующие, вымершие и искусственно созданные алфавиты мира, а также множество математических, музыкальных, химических и прочих символов.
Внутреннее представление слов в памяти компьютера
с помощью таблицы ASCII
Иногда бывает так, что текст, состоящий из букв русского алфавита, полученный с другого компьютера, невозможно прочитать - на экране монитора видна какая-то "абракадабра". Это происходит оттого, что на компьютерах применяется разная кодировка символов русского языка.
Таким образом, каждая кодировка задается своей собственной кодовой таблицей. Как видно из таблицы, одному и тому же двоичному коду в различных кодировках поставлены в соответствие различные символы.
Н апример, последовательность числовых кодов 221, 194, 204 в кодировке СР1251 образует слово «ЭВМ» (Рис. 10), тогда как в других кодировках это будет бессмысленный набор символов.
К счастью, в большинстве случаев пользователь не должен заботиться о перекодировках текстовых документов, так как это делают специальные программы-конверторы, встроенные в приложения.
Анализируя информацию, мы сталкиваемся с необходимостью определения качества и определения количества полученной информации. Определить качество информации чрезвычайно сложно, а часто и вообще невозможно. Какие-либо сведения, например исторические, могут десятилетиями считаться ненужными и вдруг их ценность может резко возрасти.
Вместе с тем определить количество информации не только можно, но и нужно. Это необходимо для того, чтобы сравнить друг с другом различные массивы информации, а также определить, какие размеры должны иметь материальные объекты (бумага, магнитные носители и т.д.), хранящие эту информацию.
Далее, говоря об измерении информации, мы будем иметь в виду определение ее количества.
Таблица кодирования ASCII
Как мы уже выяснили, традиционно для кодирования одного символа используется 8 бит. И, когда люди определились с количеством бит, им осталось договориться о том, каким кодом кодировать тот или иной символ, чтобы не получилось путаницы, т.е. необходимо было выработать стандарт – все коды символов сохранить в специальной таблице кодов. В первые годы развития вычислительной техники таких стандартов не существовало, а сейчас наоборот, их стало очень много, но они противоречивы. Первыми решили эти проблемы в США, в Институте стандартизации. Этот институт ввел в действие таблицу кодов ASCII (American Standard Code for Information Interchange – стандартный код информационного обмена США).
Рассмотрим таблицу кодов ASCII:
Таблица ASCII разделена на две части. Первая – стандартная – содержит коды от 0 до 127. Вторая – расширенная – содержит символы с кодами от 128 до 255.
Первые 32 кода отданы производителям аппаратных средств и называются они управляющие, т.к. эти коды управляют выводом данных. Им не соответствуют никакие символы.
Коды с 32 по 127 соответствуют символам английского алфавита, знакам препинания, цифрам, арифметическим действиям и некоторым вспомогательным символам.
Коды расширенной части таблицы ASCII отданы под символы национальных алфавитов, символы псевдографики и научные символы.
Все буквы расположены в них по алфавиту, а цифры – по возрастанию. Этот принцип последовательного кодирования позволяет определить код символа, не заглядывая в таблицу.
Коды цифр берутся из этой таблицы только при вводе и выводе и если они используются в тексте. Если же они участвуют в вычислениях, то переводятся в двоичную систему счисления.
Решение задач
1. Какой объём видеопамяти необходим для хранения четырёх страниц изображения при условии, что разрешающая способность дисплея равна 640Х480 точек, а используемых цветов – 32?
- RS – разрешающая способность (в нашем случае RS = 640Х480);
- I – глубина (в нашем случае – неизвестно);
- KS – количество страниц (в нашем случае KS = 4).
Для нахождения I воспользуемся формулой: N=2 I ,
где I – глубина цвета,
N – количество цветов (у нас 32).
Следовательно: 32 = 2 I и значит I = 5 бит.
Теперь все параметры нам известны, находим объём:
V = 640*480*5*4 =6144000 бит = 750 Кбайт (т.к. в 1 байте – 8 бит и в 1 Кбайте – 1024 байт)
Ответ: 750 Кбайт
2. 256-цветный рисунок содержит 1 Кбайт информации. Из скольки точек он состоит?
Решение: Найдём информационный объём одной точки: N = 2 I , 256 = 2 I , I = 8 бит (глубина)
Переведём известный объём в биты: 1Кбайт = 1024 байт*8бит = 8192 бит
Зная глубину и объём находим количество точек на изображении: 8192:8 = 1024 точек
Ответ: 1024 точек
Кодирование графической информации
Векторное и фрактальное изображения.
Векторное изображение - это графический объект, состоящий из элементарных отрезков и дуг. Базовым элементом изоражения является линия. Как и любой объект, она обладает свойствами: формой (прямая, кривая), толщиной., цветом, начертанием (пунктирная, сплошная). Замкнутые линии имеют свойство заполнения (или другими объектами, или выбранным цветом). Все прочие объекты векторной графики составляются из линий. Так как линия описывается математически как единый объект, то и объем данных для отображения объекта средствами векторной графики значительно меньше, чем в растровой графике. Информация о векторном изображении кодируется как обычная буквенно-цифровая и обрабатывается специальными программами.
К программным средствам создания и обработки векторной графики относятся следующие ГР: CorelDraw, Adobe Illustrator, а также векторизаторы (трассировщики) - специализированные пакеты преобразования растровых изображений в векторные.
Фрактальная графика основывается на математических вычислениях, как и векторная. Но в отличии от векторной ее базовым элементом является сама математическая формула. Это приводит к тому, что в памяти компьютера не хранится никаких объектов и изображение строится только по уравнениям. При помощи этого способа можно строить простейшие регулярные структуры, а также сложные иллюстрации, которые иммитируют ландшафты.
Задачи.
Известно, что видеопамять компьютера имеет объем 512 Кбайт. Разрешающая способность экрана 640 на 200. Сколько страниц экрана одновременно разместится в видеопамяти при палитре
а) из 8 цветов;
б) 16 цветов;
в) 256 цветов?
Сколько бит требуется, чтобы закодировать информацию о 130 оттенках? Нетрудно подсчитать, что 8 (то есть 1 байт), поскольку при помощи 7 бит можно сохранить номер оттенка о 0 до 127, а 8 бит хранят от 0 до 255. Легко видеть, что такой способ кодирования неоптимален: 130 заметно меньше 255. Подумайте, как уплотнить информацию о рисунке при его записи в файл, если известно, что
а) в рисунке одновременно содержится только 16 цветовых оттенков из 138 возможных;
б) в рисунке присутствуют все 130 оттенков одновременно, но количество точек, закрашенных разными оттенками, сильно различаются.
Решение.
а) очевидно, что для хранения информации о 16 оттенках достаточно 4 бита (половина байта). Однако так как эти 16 оттенков выбраны из 130, то они могут иметь номера, не умещающиеся в 4 битах. Поэтому воспользуемся методом палитр. Назначим 16 используемым в нашем рисунке оттенкам свои “локальные” номера от 1 до 15 и закодируем весь рисунок из расчета 2 точки на байт. А затем допишем к этой информации (в конец содержащего ее файла) таблицу соответствия, состоящую из 16 пар байтов с номерами оттенков: 1 байт - наш “локальный” номер в данном рисунке, второй - реальный номер данного оттенка. (когда вместо последнего используется закодированная информация о самом оттенке, например, сведения об яркости свечения “электроннык пушек” Red, Green, Blue электронно-лучевой трубки, то такая таблица и будет представлять собой палитру цветов). Если рисунок достаточно велик, выигрыш в объеме полученного файла будет значительным;
б) попытаемся реализовать простейший алгоритм архивации информации о рисунке. Назначим трем оттенкам, которыми закрашено минимальное количество точек, коды 128 - 130, а остальным оттенкам - коды 1 -127. Будем записывать в файл (котрый в этом случае представлыет собой не последовательность байтов, а сплошной битовый поток) семибитные коды для оттенков с номерами от 1 до 127. Для оставшихся же трех оттенков в битовом потоке будем записывать число-признак - семибитный 0 - и сразу за ним двухбитный “локальный” номер, а в конце файла добавим таблицу соответствия “локальных”и реальных номеров. Так как оттенки с кодами 128 - 130 встречаются редко, то семибитных нулей будет немного.
Заметим, что постановка вопросов в данной задаче не исключает и другие варианты решения, без привязки к цветовому составу изображения - архивацию:
а) на основе выделения последовательности точек, закрашенных одинаковыми оттенками и замены каждой из этих последовательностей на пару чисел (цвет),(количество) (этот принцип лежит в основе графического формата РСХ);
б) путем сравнения пиксельных строк (запись номеров оттенков точек первой страницы целиком, а для последующих строк запись номеров оттенков только тех точек, оттенки которых отличаются от отенков точек, стоящих в той же позиции в предыдущей строке, - это основа формата GIF);
в) с помощью фрактального алгоритма упаковки изображений (формат YPEG). (ИО 6,1999)
Читайте также: