Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metodichka_KiD / Главы_1_3 / Глава1_3.doc
Скачиваний:
114
Добавлен:
09.02.2015
Размер:
1.39 Mб
Скачать

2.3. Коды и кодирование: основные понятия и определения

Под кодом понимают совокупность знаков (или символов) некоторого алфавита и систему определенных правил, при помощи которых информация, подлежащая передаче, хранению или обработке, может быть представлена (закодирована) в виде комбинации этих символов. В цифровых устройствах для кодирования информации чаще всего используют алфавит, содержащий всего два символа – «0» и «1» и, следовательно, сообщения представляют собой конечную или бесконечную последовательность двоичных (бинарных) символов. При этом, исходя из чисто технических соображений, такие последовательности разбивают на блоки, называемые двоично-кодированными словами или просто словами.

Если все слова, используемые для передачи и хранения или участвующие в преобразованиях, содержат одинаковое число символов (разрядов), допустим m, код называют равномерным и именно такие коды обычно используют в АСОИиУ. Значение m определяется множеством сообщений M, подлежащих кодированию. Если для передачи, хранения или преобразований используется M кодовых комбинаций (слов) таких, что

, (2.5)

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

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

Пример 2.2. Предположим, что по двоичному симметричному каналу должны передаваться сообщения, содержащие информацию о состоянии некоторого объекта или процесса. Положим далее, что множество возможных состояний объекта и, следовательно, множество возможных сообщений . Определив из (2.5) значение , поставим в соответствие каждому из возможных сообщений одну из кодовых комбинаций трехразрядного простого кода: {000, 001, 010, 011, 100, 101, 110, 111}. Допустим, что передается слово 010 и в канале исказился первый из разрядов этого слова, то есть на выходе из канала получено слово 110. На приемной стороне нет возможности обнаружить данную ошибку (равно, как и любую другую), так как полученное из канала слово 110 входит в перечень слов, которые могут быть получены и при безошибочной передаче. Естественно, что если ошибка не обнаруживается, то нет возможности исправить ее.

Рассмотренный пример позволяет сделать следующий важный вывод – ошибки в разрядных словах могут быть обнаружены только в том случае, когда полученные из канала слова не входят в перечень возможных безошибочных слов, поступающих на вход канала. Другими словами множество разрядных слов должно быть разбито на два подмножества: одно из них – это рабочие или разрешенные слова и второе – искаженные ошибками слова или запрещенные слова. Для того, чтобы установить к какому из подмножеств принадлежит слово, полученное из канала, разрешенным словам до их поступления в канал с помощью определенных правил их кодирования придают некоторый признак (или свойство), который утрачивается при переходе слова в подмножество запрещенных слов. Следовательно, контролируя на выходе из канала наличие этого признака, можно судить о принадлежности слова к подмножеству разрешенных и, следовательно, о достоверности (безошибочности) слова или об его искажении ошибками, если этот признак утрачен и слово оказалось в подмножестве запрещенных.

Рассмотрим несколько примеров формирования (кодирования) разрешенных кодовых слов.

Пример 2.3. В вычислительных машинах информация обычно представляется виде двоичных последовательностей. При этом используется несколько способов представления десятичных чисел 0, 1, … , 9. Одним из таких способов является код «два из пяти», показанный в табл. 2.4. Любое из десятичных чисел в этом коде представляется в виде пятиразрядной двоичной последовательности, в которой два из пяти символов всегда равны «1».

Таблица 2.4

Представление десятичных чисел с помощью равновесного кода «2 из 5»

Десятичные числа

Код «2 из 5»

0

0

0

0

1

1

1

1

1

0

0

0

2

1

0

1

0

0

3

0

1

1

0

0

4

1

0

0

1

0

5

0

1

0

1

0

6

0

0

1

1

0

7

1

0

0

0

1

8

0

1

0

0

1

9

0

0

1

0

1

Отметим, что и, следовательно, с помощью кода «2 из 5» можно закодировать до 10 произвольных сообщений, а не только десятичные числа. При использовании этого кода из множества пятиразрядных кодовых комбинаций, общее число которых равно , разрешенными (рабочими) являются только комбинаций. При возникновении в кодовой комбинации одиночной ошибки, т.е при искажении

(конверсии) в канале одного из пяти символов, слово на его выходе будет содержать один или три единичных символа, что свидетельствует о наличии ошибки в слове, полученном из канала. Рассмотренный код «2 из 5» является одним из представителей так называемых равновесных кодов.

В общем случае с помощью равновесного кода «m из n» могут быть представлены (закодированы) сообщений. Разрешенные слова в этом случае представляют собой двоичные последовательности разрядности n, содержащие ровно m единичных символов. Например, равновесный код «2 из 6» позволяет закодировать до сообщений. При этом разрешенные кодовые комбинации представляют собой шестиразрядные двоичные последовательности, содержащие ровно два единичных символа.

Равновесные коды оказываются достаточно эффективными для обнаружения возможных ошибок в двоичных несимметричных каналах для которых вероятность возникновения ошибки типа «конверсия символа 0 в символ 1» значительно больше (или значительно меньше), чем вероятность возникновения ошибки типа «конверсия символа 1 в символ 0».

Пример 2.4. Любой простой двоичный код, в частности трехразрядный, примененный в примере 2.2 для кодирования восьми сообщений, не позволяет обнаружить возможные в словах ошибки, так как все слова кода являются разрешенными. При этом ошибка в одном, двух или трех разрядах некоторого разрешенного слова преобразует это слово в другое, но также разрешенное. Для обеспечения возможности разбиения множества слов на разрешенные и запрещенные при сохранении общего числа сообщений, подлежащих кодированию равного восьми, увеличим разрядность слов на единицу, т.е. к трем разрядам простого кода добавим четвертый –, именуемый проверочным или контрольным. В результате получим множество из 24=16 слов ,которое разобьем на два подмножества – разрешенных и запрещенных слов. Причем в подмножество разрешенных включим те слова, для которых

,

где аi (i=1, 2, 3) – символы простого кода,

– символ сложения по модулю два.

Таблица 2.5.

Представление сообщений с помощью кода с контролем четности

Сообщение Si

Код сообщения

а3 а2 а1

S1

0 0 0

0

S2

0 0 1

1

S3

0 1 0

1

S4

0 1 1

0

S5

1 0 0

1

S6

1 0 1

0

S7

1 1 0

0

S8

1 1 1

1

Очевидно, что полученные таким образом разрешенные кодовые слова будут характеризоваться признаком четности (таблица 2.5).Множество полученных таким образом разрешенных слов образует код, именуемый «код с контролем четности». (Четными называют двоичные слова, содержащие четное число единиц, а также слово «все нули»).

Подмножество запрещенных слов образуют все нечетные слова и появление на выходе из канала нечетного слова свидетельствует об ошибке.

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

С некоторыми из них вы познакомитесь в следующих разделах пособия. Хотя различные алгоритмы кодирования очень непохожи друг на друга, общим для них всех (в том числе и для рассмотренных выше) является то, что формируемые в результате их применения кодовые слова принадлежат так называемым избыточным кодам.