Файл: Методы кодирования данных.pdf

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

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

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

Добавлен: 28.06.2023

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

Скачиваний: 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
+
11111010
11111111

00000110
+
11111010
100000000

00000101
+
11111001
11111110

00000101
+
00000110
00001011

Отбрасывание старшего разряда и добавление 12

не требуется

00000000
+
00000001
00000001

не требуется

не требуется

Результат

-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
+
11111011
00000000

00000110
+
11111011
100000001

00000101
+
11111010
11111111

00000101
+
00000110
00001011

Отбрасывание старшего разряда и добавление 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

знак
+

величина
28

знак
+

величина
(1) + 0.3671875

порядок

мантисса