Файл: Методы кодирования данных ( Основные понятия кодирования информации).pdf
Добавлен: 01.04.2023
Просмотров: 223
Скачиваний: 3
СОДЕРЖАНИЕ
1. Теоретические основы кодирования информации
1.1 Основные понятия кодирования информации
1.2 Классификация назначения и способы представления кодов
1.3. Методы шифрования и кодирования
2. Особенности кодирования различных видов данных
2.1. Кодирование текстовой информации
2.2. Кодирование графической информации
кодировка изображений. Картинки разбиваются линиями, прочерченными горизонтально вертикально, каждый отдельный двухмерный массив, или пиксель как элемент общего изображения кодируется по цвету выделенным числом, благодаря чему создается возможность обрабатывать непрерывные величины.
Условные знаки, или коды, используемые в ходе кодирования в обязательном порядке проходят систематизацию и помогают представлять любые объемы информации для быстрой и эффективной их обработки в ходе дальнейшего применения необходимых данных.
В качестве элементов кодируемой информации могут выступать:
- буквы, слова и фразы естественного языка;
- различные символы, такие как знаки препинания, арифметические и логические операции, операторы сравнения и т.д. Следует отметить, что сами знаки операций и операторы сравнения – это кодовые обозначения;
- числа;
- аудиовизуальные образы;
- ситуации и явления;
- наследственная информация;
- и т.д.
Кодовые обозначения могут представлять собой:
- буквы и сочетания букв естественного языка;
- числа;
- графические обозначения;
- электромагнитные импульсы;
- световые и звуковые сигналы;
- набор и сочетание химических молекул;
- и т.д.
Кодирование может выполняться в целях:
- удобства хранения, обработки и передачи информации (как правило, закодированная информация представляется более компактно, а также пригодна для обработки и передачи автоматическими программно-техническими средствами);
- удобства информационного обмена между субъектами;
- наглядности отображения;
- идентификации объектов и субъектов;
- сокрытия секретной информации;
- и т.д.
Кодирование информации бывает одно- и многоуровневым. Примером одноуровневого кодирования служат световые сигналы, подаваемые светофором (красный – стой, желтый – приготовиться, зеленый – вперед). В качестве многоуровневого кодирования можно привести представление визуального (графического) образа в виде файла фотографии. Вначале визуальная картинка разбивается на составляющие элементарные элементы (пикселы), т.е. каждая отдельная часть визуальной картинки кодируется элементарным элементом. Каждый элемент представляется (кодируется) в виде набора элементарных цветов (RGB: англ. red – красный, green – зеленый, blue – синий) соответствующей интенсивностью, которая в свою очередь представляется в виде числового значения. Впоследствии наборы чисел, как правило, преобразуются (кодируются) с целью более компактного представления информации (например, в форматах jpeg, png и т.д.). И наконец, итоговые числа представляются (кодируются) в виде электромагнитных сигналов для передачи по каналам связи или областей на носителе информации. Следует отметить, что сами числа при программной обработке представляются в соответствии с принятой системой кодирования чисел.
Кодирование информации может быть обратимым и необратимым. При обратимом кодировании на основе закодированного сообщения можно однозначно (без потери качества) восстановить кодируемое сообщение (исходный образ). Например, кодирование с помощью азбуки Морзе или штрихкода. При необратимом кодировании однозначное восстановление исходного образа невозможно. Например, кодирование аудиовизуальной информации (форматы jpg, mp3 или avi) или хеширование.
Различают общедоступные и секретные системы кодирования. Первые используются для облегчения информационного обмена, вторые – в целях сокрытия информации от посторонних лиц.
1.3. Методы шифрования и кодирования
Представление чисел в двоичном виде (в компьютере). Как известно, информация, хранящаяся и обрабатываемая в компьютерах, представлена в двоичном виде. Бит (англ. binary digit - двоичное число; также игра слов: англ. bit - кусочек, частица) - единица измерения количества информации, равная одному разряду в двоичной системе счисления. С помощью бита можно закодировать (представить, различать) два состояния (0 или 1; да или нет). Увеличивая количество битов (разрядов), можно увеличить количество кодируемых состояний. Например, для байта (англ. byte), состоящего из 8 битов, количество кодируемых состояний составляет 28 = 256.
Числа кодируются в т.н. форматах с фиксированной и плавающей запятой.
1. Формат с фиксированной запятой, в основном, применяется для целых чисел, но может применяться и для вещественных чисел, у которых фиксировано количество десятичных знаков после запятой. Для целых чисел подразумевается, что «запятая» находится справа после младшего бита (разряда), т.е. вне разрядной сетки. В данном формате существуют два представления: беззнаковое (для неотрицательных чисел) и со знаком.
Для беззнакового представления все разряды отводятся под представление самого числа. Например, с помощью байта можно представить беззнаковые целые числа от 010 до 25510 (000000002 - 111111112) или вещественные числа с одним десятичным знаком от 0.010 до 25.510 (000000002 - 111111112). Для знакового представления, т.е. положительных и отрицательных чисел, старший разряд отводится под знак (0 – положительное число, 1 – отрицательное).
Различают прямой, обратный и дополнительный коды записи знаковых чисел.
В прямом коде запись положительного и отрицательного числа выполняется так же, как и в беззнаковом представление (за исключение того, что старший разряд отводится под знак). Таким образом, числа 510 и -510 записываются, как 000001012 и 100001012. В прямом коде имеются два кода числа 0: «положительный нуль» 000000002 и «отрицательный нуль» 100000002.
При использовании обратного кода отрицательное число записывается в виде инвертированного положительного числа (0 меняются на 1 и наоборот). Например, числа 510 и -510 записываются, как 000001012 и 111110102. Следует отметить, что в обратном коде, как и в прямом, имеются «положительный нуль» 000000002 и «отрицательный нуль» 111111112. Применение обратного кода позволяет вычесть одно число из другого, используя операцию сложения, т.е. вычитание двух чисел X – Y заменяется их суммой X + (-Y). При этом используются два дополнительных правила:
- вычитаемое число инвертируется (представляется в виде обратного кода);
- если количество разрядов результата получается больше, чем отведено на представление чисел, то крайний левый разряд (старший) отбрасывается, а к результату добавляется 12.
В следующей таблице приведены примеры вычитания.
Таблица 1. Примеры вычитания двух чисел с использованием обратного кода
X – Y |
5 – 5 |
6 – 5 |
5 – 6 |
5 – (-6) |
X2 |
00000101 |
00000110 |
00000101 |
00000101 |
Y2 |
00000101 |
00000101 |
00000110 |
11111001 |
Замена сложением |
5 + (-5) |
6 + (-5) |
5 + (-6) |
5 + 6 |
Обратный код для вычитаемого (-Y2) |
11111010 |
11111010 |
11111001 |
00000110 |
Сложение |
00000101 |
00000110 |
00000101 |
00000101 |
Отбрасывание старшего разряда и добавление 12 |
не требуется |
00000000 |
не требуется |
не требуется |
Результат |
-0 |
1 |
-1 |
11 |
Несмотря на то, что обратный код значительно упрощает вычислительные процедуры, а соответственно и быстродействие компьютеров, наличие двух «нулей» и другие условности привели к появлению дополнительного кода. При представлении отрицательного числа его модуль вначале инвертируется, как в обратном коде, а затем к инверсии сразу добавляется 12.
В следующей таблице приведены некоторые числа в различном кодовом представлении.
Таблица 2. Представление чисел в различных кодах
Десятичное |
Код двоичного представления (8 бит) |
||
прямой |
обратный |
дополнительный |
|
127 |
01111111 |
01111111 |
01111111 |
6 |
00000110 |
00000110 |
00000110 |
5 |
00000101 |
00000101 |
00000101 |
1 |
00000001 |
00000001 |
00000001 |
0 |
00000000 |
00000000 |
00000000 |
-0 |
10000000 |
11111111 |
--- |
-1 |
10000001 |
11111110 |
11111111 |
-5 |
10000101 |
11111010 |
11111011 |
-6 |
10000110 |
11111001 |
11111010 |
-127 |
11111111 |
10000000 |
10000001 |
-128 |
--- |
--- |
10000000 |
При представлении отрицательных чисел в дополнительных кодах второе правило несколько упрощается - если количество разрядов результата получается больше, чем отведено на представление чисел, то только отбрасывается крайний левый разряд (старший).
Таблица 3. Примеры вычитания двух чисел с использованием дополнительного кода
X – Y |
5 – 5 |
6 – 5 |
5 – 6 |
5 – (-6) |
X2 |
00000101 |
00000110 |
00000101 |
00000101 |
Y2 |
00000101 |
00000101 |
00000110 |
11111010 |
Замена сложением |
5 + (-5) |
6 + (-5) |
5 + (-6) |
5 + 6 |
Дополнительный код для вычитаемого (-Y2) |
11111011 |
11111011 |
11111010 |
00000110 |
Сложение |
00000101 |
00000110 |
00000101 |
00000101 |
Отбрасывание старшего разряда и добавление 12 |
не требуется |
00000001 |
не требуется |
не требуется |
Результат |
-0 |
1 |
-1 |
11 |
Можно возразить, что представление чисел в дополнительных кодах требует на одну операцию больше (после инверсии всегда требуется сложение с 12), что может и не потребоваться в дальнейшем, как в примерах с обратными кодами. В данном случае срабатывает известный «принцип чайника». Лучше сделать процедуру линейной, чем применять в ней правила «Если A то B» (даже если оно одно). То, что с человеческой точки зрения кажется увеличением трудозатрат (вычислительной и временной сложности), с точки зрения программно-технической реализации может оказаться эффективней.
Еще одно из преимуществ дополнительного кода перед обратным заключается в возможности представления в единице информации на одно число (состояние) больше, за счет исключения «отрицательного нуля». Поэтому, как правило, диапазон представления (хранения) для знаковых целых чисел длиной один байт составляет от +127 до -128.
2. Формат с плавающей запятой, в основном, используется для вещественных чисел. Число в данном формате представляется в экспоненциальном виде
X = en * m, (22.1)
где e - основание показательной функции;
n - порядок основания;
en - характеристика числа;
m - мантисса (лат. mantissa - прибавка) – множитель, на который надо умножить характеристику числа, чтобы получить само число.
Например, число десятичное число 350 может быть записано, как 3.5 * 102, 35 * 101, 350 * 100 и т.д. В нормализованной научной записи, порядок n выбирается такой, чтобы абсолютная величина m оставалась не меньше единицы, но строго меньше десяти (1 ≤ |m| < 10). Таким образом, в нормализованной научной записи число 350 выглядит, как 3.5 * 102. При отображении чисел в программах, учитывая, что основание равно 10, их записывают в виде m E ± n, где Е означает «*10^» («…умножить на десять в степени…»). Например, число 350 – 3.5Е+2, а число 0.035 – 3.5Е-2.
Так как числа хранится и обрабатывается в компьютерах в двоичном виде, то для этих целей принимается e = 2. Одной из возможных форм двоичного представления чисел с плавающей запятой является следующая.
bn± |
bn7 |
bn6 |
bn5 |
bn4 |
bn3 |
bn2 |
bn1 |
bm± |
bm15 |
bm14 |
bm13 |
bm12 |
bm11 |
bm10 |
bm9 |
bm8 |
bm7 |
bm6 |
bm5 |
bm4 |
bm3 |
bm2 |
bm1 |
знак |
величина |
знак |
величина |
||||||||||||||||||||
порядок |
мантисса |
Рис. 1. Двоичный формат представления чисел с плавающей запятой
Биты bn± и bm±, означающие знак порядка и мантиссы, кодируются аналогично числам с фиксированной запятой: для положительных чисел «0», для отрицательных – «1». Значение порядка выбирается таким образом, чтобы величина целой части мантиссы в десятичном (и соответственно в двоичном) представлении равнялась «1», что будет соответствовать нормализованной записи для двоичных чисел. Например, для числа 35010 порядок n = 810 = 0010002(350 = 1.3671875 * 28), а для 57610 – n = 910 = 0010012 (576 = 1.125 * 29). Битовое представление величины порядка может быть выполнено в прямом, обратном или дополнительном коде (например, для n = 810 бинарный вид 0010002). Величина мантиссы отображает дробную часть. Для ее преобразования в двоичный вид, она последовательно умножается на 2, пока не станет равной 0. Например,
Рис. 2. Пример получения дробной части в бинарном виде
Целые части, получаемые в результате последовательного перемножения, и представляют собой двоичный вид дробной части (0.367187510 = 01011112). Оставшаяся часть разрядов величины мантиссы заполняется 0. Таким образом, итоговый вид числа 350 в формате с плавающей запятой с учетом представления мантиссы в нормализованной записи
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
знак |
величина |
знак |
величина |
||||||||||||||||||||
порядок |
мантисса |