Файл: Методы кодирования данных (Разработка приложения для кодирования текстовой информации).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 23.04.2023

Просмотров: 537

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

На примере языка программирования Паскаль[22] эти значения соответствуют типам переменных BYTE и WORD, которые имеют длину 255 и 65535.

Алгоритмы кодирования десятичных чисел в двоичный код разнятся в зависимости от особенностей чисел.

Целые небольшие числа без знака

Для записи таких чисел в соответствии с двоичной системой счисления на запоминающем устройстве обычно выделяется 1 байт[23]. Схематически запись таких чисел на носитель можно проиллюстрировать так (рис. №3):

Рис. №3 Схема кодирования двоичных чисел

Целые большие числа (положительные и отрицательные)

Запись одного такого числа требует выделения уже 2 байт (16 бит) на запоминающем устройстве.

Один из битов блока (старший) используется для записи знака (логический ноль - для положительного числа, логическая единица - для отрицательного)[24].

Для примера рассмотрим алгоритм кодирования числа +2676:

1. переводим число в двоичную систему счисления. В двоичной системе счисления число будет выглядеть как 101001110100

2 производим запись числа в первые 15 бит 16-битного блока, оставляя 16-й бит пустым, что соответствует знаку «+»

В итоге получим (рис. №4)

Рис. №4 Схема кодирования чисел более 255

В случае кодирования отрицательного[25] числа наряду с соответствующим значением старшего бита также осуществляется инвертирование остальных битов. Инвертирование применяется с целью замены операций вычитания операциями сложения[26]. Рассмотрим пример кодирования числа -2676:

1. Осуществляется перевод из десятичной в двоичную систему счисления. Число приобретает вид

101001110100

2. Производится запись числа в первые 15 бит блока состоящего из 16 бит. Далее значение каждого и записываемых бит изменяется на противоположное (инвертируется).

3. Последнее: в 16-й бит производится запись, соответствующая отрицательному значению числа, логическая единица.

Схематически число -2676 на запоминающем устройстве можно представить так(рис. №5):

Рис. №5 Кодирование отрицательных чисел

Наибольшее десятичное число, которое может быть закодировано в 15 битах - 32767.

Дробные числа (положительные и отрицательные)


Дробные числа или числа с плавающей точкой[27] - форма представления вещественных (действительных) чисел, в которой число хранится в форме мантиссы и показателя степени. При этом число с плавающей точкой имеет фиксированную относительную точность и изменяющуюся абсолютную.

Для записи одного такого числа традиционно[28] выделяется ячейка в 4 байт (32 бит). Алгоритм кодирования следующий[29]:

1. Как и в предыдущем случае в старший бит ячейки записывается логический ноль (если число положительное) или логическая единица (если число отрицательное).

2. Во второй бит записывается знак порядка

3. В следующие семь бит будет записано значение порядка.

4. Далее оставшиеся биты (23 бит) отводятся под запись мантисы числа.

Рис. №6 Кодирование дробных числе

Для понимания то, что такое мантиса[30] числа(рис.№5) рассмотрим процесс преобразования десятичного числа 6.25 в бинарный код.

Итак, рассмотрим алгоритм[31]:

1. Десятичное число переводится в двоичное - получаем двоичное число 110,01.

2. Теперь определяется мантиса числа, для чего необходимо переместить запятую таким образом чтобы слева не оставалось ни одной единицы. На выходе получаем мантису ,11001.

3. Определяется значение порядка и знак порядка. Число символов, на которые была сдвинута запятая в процессе получения мантисы является значение порядка. В нашем примере значение порядка равняется 3 (в двоичной форме 11). Направление движения запятой есть знак порядка (отрицательный при движении вправо, положительный - влево)

Порядок нашего двоичного числа (110,01), в соответствии с выше сказанным равен +11.

В виде двоичного кода число примет вид (рис. №6):

Рис. №6 Кодирование дробных чисел

В случае, когда числа с плавающей точкой кодируются на 32-х битах их обозначают как числа одинарной точности, на 64-х битах - как числа двойной точности.

1.4. Двоичное кодирование текста

На данный момент для кодирования текстовой информации в двоичный код применяются сразу несколько стандартов.

Стандарт ASCII (от англ. American Standard Code for Information Interchange) - существует с 60-х годов, в соответствии с ним кодирование осуществляется на 7 битах[32] (каждая буква или же символ записывается компьютером в одну ячейку 7 бит.


Семибитная ячейка способна принимать 128 состояний и в сданном стандарте каждое из таких состояний ассоциируется с какой-либо буквой, знаком, символом.

Однако, стандарт кодирования на 7 битах не позволяет закодировать информацию на всех существующих видах кодировок[33]. Так возникли восьмибитные стандарты в которых диапазон кодирования расширился до 256 символов (здесь первые 128 символов аналогичны ASCII, другие 128 отвечают за региональные языковые особенности). Восьмибитными кодировками, распространенными в РФ являются, например KOI8, UTF8, Windows-1251.

Unicode[34] - универсальные стандарты кодирования текстовой информации. Здесь для записи одной буквы, знака, символа используются 16 и более битов. В данных стандартах представлены буквы большинства существующих языков.

Отсутствие единого стандарта кодирования текстовой информации порой является причиной проблем, возникающих, например в случае неверного определения компьютером использованной кодировки и как итог бессмысленные знаки вместо осмысленного текста на мониторе.

В WEB - программировании широкое распространение получила кодировка кода в файлах-скриптах UTF8[35].

1.5. Кодирование в двоичный код графической информации

В основе процесса кодирования изображений лежит разделение изображения на множество микроскопических цветных фрагментов (пикселей), обращающее изображение, например фотографию, в некоторое подобие мозаичного полотна. Цвет каждого пикселя также кодируется и записывается на запоминающее устройство.

Изображение фрагментируется на пиксели фотокамерой или сканером. Количество пикселей на которые может быть разбито изображение - определяет одну из основных характеристик оборудования с точки зрения его качества. Камера с характеристикой, например, 10 Mega Pixels фрагментирует изображение на 10 миллионов пикселей. Чем большее количество пикселей содержит закодированное изображение, тем более впечатляющий результат получается, например, на экране монитора или отпечатанных на бумаге снимках. Однако количество пикселей не единственно значимый параметр, большую роль играет и их цветовое разнообразие (глубина цвета). Существуют несколько алгоритмов записи цвета. Чаще всего используется алгоритм RGB[36] (название составлено из заглавных букв трех цветов, Red, Green, Blue, красный, зеленый, синий). Смешивая эти цвета в разных пропорциях можно получить любой нужный цвет или оттенок.


Согласно алгоритму RGB каждый пиксель кодируется путем указания пропорций соотношения красного, зеленого и синего цветов, участвовавших в его формировании. Большее количества битов, выделенных для кодирования пикселя, соответствует большей насыщенности изображения. Кроме RGB-пространства[37], в сфере компьютерного дизайна используют CMYK (для последующей печати, например, в типографии).

При выделении на кодирование пикселя 8 бит глубина цвета составляет 256 цветов; 12-битов - 4096 цветов; 16-битов - 65536 цветов, 18-битов - 262144 цветов; 24-битов - 16,7 млн цветов (последний вариант называют еще True Color или «Настоящий Цвет»).

В случае использовании 32 бит на кодирование пикселя дополнительные биты используются для регулирования эффекта прозрачности(альфа-канала) или же не используются вовсе (как пример, изображение с атрибутом прозрачности GIF, TIFF и PNG[38]).

Фотокамеры работают только по принципу растровой графики. Т.е. изображение, полученное с помощью фотокамеры, состоит из пикселей, которые при трансформировании(увеличении) итогового изображения происходит увеличение отдельного пикселя. А значит, дополнительные пиксели увеличенного изображения не несут информации. Помимо растровой графики существует также и векторная графика[39], создаваемая исключительно при помощи компьютера, где изображения создаются не из пикселей, а из графических примитивов, а именно линий, фигур и т.п. Возможности векторной графики востребованы дизайнерами, инженерами, архитекторами.

Для записи на запоминающем устройстве векторного изображения компьютер кодирует тип объекта, координаты, параметры, цвет заливки и т.п. Векторная графика в последнее время находи применение и в WEB-дизайне. С помощью векторной графики можно реализовать различные элементы web-страницы, которые будут одинаково хорошо отображаться при разных разрешениях монитора и мобильных устройств[40].

Если размер изображения велик[41], допустим речь идет о сложном дизайнерском проекте, для его хранения в растровой системе пришлось бы кодировать цвет каждого пикселя что потребовало бы значительно больших ресурсов запоминающего устройства нежели при использовании векторной системы. С другой стороны, использование векторной графики не позволяет кодировать фото.


1.6. Кодирование аудиоинформации

Две основные характеристики звуковых волн - частота и амплитуда[42]. Амплитуда характеризует громкость звука. Частота определяет тон, высоту. Писк комара, например, это звук, характеризующийся малой амплитудой и высокой частотой. Звук грозы напротив характеризуется большой амплитудой и низкой частотой.

Графически звуковую волну можно изобразить следующим образом (рис. 7):

Рис. №7 Схема звуковой волны

Далее рассмотрим все схему работы компьютера со звуком.

Колебания воздуха преобразуются посредством микрофона в соответствующие им электрические колебания.

Далее благодаря звуковой карте электрические колебания преобразуются в двоичный код, который затем записывается на запоминающем устройстве. По сути, в данном случае звуковая карта выполняет функции аналогово-цифрового преобразователя[43].

Когда запись воспроизводится происходит обратный процесс, то есть бинарный код преобразуется в электрические сигналы, последние посредством магнитной головки акустической системы преобразуются в слышимые звуковые волны.

На схеме ниже представлено графическое изображение волны. Геометрия волны такова что каждому конкретному момент времени соответствует определенная интенсивность (степень отклонения от начального состояния, рис. №8).

Рис. №8 Амплитуда звуковой волны

И таким образом разделив временной интервал, в течение которого длится звук, на очень маленькие временные отрезки, звуковую волну можно записать как последовательность значений интенсивности звука в каждом таком временном отрезке.

Однако частота такой дискретизации (разбиения звуковой волны на отрезки) должна быть достаточно высокой, чтобы полученная таким образом картина отображала реальную геометрию волны.

Описанный принцип дискретизации звуковой волны на небольшие отрезки лежит в основе кодирования звука.

Звуковая карта и осуществляет такую дискретизации в совокупности с последующем кодированием интенсивности каждого из фрагментов в бинарный код.

Чем выше частота дискретизации, тем ближе к реальной геометрии звуковой волны зафиксированные данные и тем качественней получается запись.

Возьмем для примера запись простой речи[44]. При воспроизведении речь будет восприниматься привычно, только в том случае, если частота дискретизации при кодировании была 8000 Гц (8 КГц) и более (секунда речи при такой записи в виде бинарного кода должна быть представлена по крайней мере из 8000 частей.