Кодирование дискретного сигнала
Кодирование– это представление сигнала в определенной форме, удобной или пригодной для последующего использования сигнала. Говоря строже, это правило, описывающее отображение одного набора знаков в другой набор знаков. Тогда отображаемый набор знаков называется называется исходным алфавитом исходным алфавитом, а набор знаков, который используется для отображения, - кодовым алфавитом, или алфавитом для кодирования. При этом кодированию подлежат как отдельные символы исходного алфавита, так и их комбинации. Аналогично для построения кода используются как отдельные символы кодового алфавита, так и их комбинации.
Совокупность символов кодового алфавита, применяемых для кодирования одного символа (или одной комбинации символов) исходного алфавита, называется кодовой комбинацией, или, короче, кодом символа. При этом кодовая комбинация может содержать один символ кодового алфавита.
Символ (или комбинация символов) исходного алфавита, которому соответствует кодовая комбинация, называется исходным символом.
Совокупность кодовых комбинаций называется кодом.
Взаимосвязь символов (или комбинаций символов, если кодируются не отдельные символы исходного алфавита) исходного алфавита с их кодовыми комбинациями составляет таблицу соответствия(или таблицу кодов).
Следует отметить, что понятие «код» омонимично: оно может употребляться и в смысле кодовой комбинации, и в приведенном выше смысле. Аналогично, понятие «кодовая комбинация» синонимично понятию «код».
Так, можно закодировать значения дискретных сигналов x(t1) и x(t4) из рис. 3.2б. Пусть после квантования по уровню им соответствуют значения xmin и x2. Поскольку шаг квантования постоянен, для кодирования обоих сигналов можно использовать уровни квантования, а для представления уровней – десятичную и двоичную систему счисления. Тогда в соответствии с табл. 3.1. имеем:
Сигнал | Код (для уровня квантования) | |
Десятичная система счисления | Двоичная система счисления | |
xmin | ||
x2 |
По полученной таблице можно построить несколько таблиц соответствия:
1) для кодирования сигнала в десятичной системе счисления:
Сигнал | Код в десятичной системе счисления |
xmin | |
x2 |
Исходный алфавит: { xmin , x2}; кодовый алфавит: {0,1,2,3,4,5,6,7,8,9}; исходные символы: xmin и x2; кодовые комбинации: 0 и 2; код: {0, 2}.
2) для кодирования сигнала в двоичной системе счисления:
Сигнал | Код в двоичной системе счисления |
xmin | |
x2 |
Исходный алфавит: { xmin , x2}; кодовый алфавит: {0,1}; исходные символы: xmin и x2; кодовые комбинации: 0 и 10; код: {0, 10}.
3) для кодирования десятичных кодов двоичными числами:
Код в десятичной системе счисления | Код в двоичной системе счисления |
Исходный алфавит: {0,1,2,3,4,5,6,7,8,9}; кодовый алфавит: {0,1}; исходные символы:0 и 2; кодовые комбинации: 0 и 10; код: {0, 10}.
Обратная процедура получения исходных символов по кодам символов называется декодированием. Очевидно, для выполнения правильного декодирования код должен быть однозначным, т.е. одному исходному знаку должен соответствовать точно один код и наоборот.
В зависимости от целей кодирования, различают следующие его виды:
1) кодирование по образцу - каждый знак дискретного сигнала представляется знаком или набором знаков того алфавита, в котором выполняется кодирование. Используется, в частности, всякий раз для ввода информации в компьютер для ее внутреннего представления;
2) криптографическоекодирование, или шифрование, – используется, когда нужно защитить информацию от несанкционированного доступа;
3) эффективное,или оптимальное, кодирование – для устранения избыточности данных путем снижения среднего числа символов кодового алфавита для представления одного исходного символа. Активно используется в архиваторах;
4) помехозащитноеили помехоустойчивое кодирование – для обеспечения заданной достоверности в случае, когда на сигнал накладывается помеха. Используется для защиты от помех при передаче информации по каналам связи.
Кодирование по образцу
Большинство кодов, используемых в информатике для кодирования по образцу, имеют одинаковую длину и используют двоичную систему для представления кода (и, возможно, шестнадцатеричную как средство промежуточного представления).
Прямые коды
Применяются для представления в ЭВМ числовых данных и используют двоичную систему счисления.
Примером прямого кода для семнадцати натуральных десятичных чисел является соответствующий фрагмент табл. 3.1. Эти коды имеют переменную длину, что неудобно для их обработки. Для получения кодов постоянной длины кодовые комбинации дополняются незначащими нулями. Тогда прямые коды постоянной длины для семнадцати первых натуральных десятичных чисел представлены в табл. 4.1.
Таблица 4.1
Десятичные числа | Прямые коды |
Прямые коды могут использоваться для кодирования и нечисловых данных.
Пример 4.1. Построить двоичные коды для символов a, b, c, d.
Пронумеруем исходные символы, начиная с нуля, и по табл. 3.1 сформируем двоичные коды для номеров символов. Тогда двоичные коды исходных символов примут вид:
Исходные символы | Номер | Двоичный код |
a | ||
b | ||
c | ||
d |
Для получения двоичного кода постоянной длины добавим незначащие нули к кодовым комбинациям для a и b. Получим:
Таблица 4.2
Исходные символы | Двоичные коды |
a | |
b | |
c | |
d |
ASCII-коды
Наиболее распространенным является код ASCII (American Standard Code for Information Interchange), который используется для внутреннего представления символьной информации в операционной системе MS DOS, в Блокноте операционной системы Windows’xx, а также для кодирования текстовых файлов в Интернет. Структура кода представлена на рис. 4.1.
номера столбцов
……
A | B | C | D | E | F | |||||||||||
… | … | @ | P | ` | p | А | Р | а | … | … | … | р | Ё | |||
… | … | ! | A | Q | a | q | Б | С | б | … | … | … | с | ё | ||
… | … | “ | B | R | b | r | В | Т | в | … | … | … | т | / | ||
… | … | # | C | S | c | s | Г | У | г | … | … | … | у | \ | ||
… | … | $ | D | T | d | t | Д | Ф | д | … | … | … | ф | / | ||
… | … | % | E | U | e | u | Е | Х | е | … | … | … | х | \ | ||
… | … | & | F | V | f | v | Ж | Ц | ж | … | … | … | ц | ® | ||
… | … | ‘ | G | W | g | w | З | Ч | з | … | … | … | ч | |||
… | … | ( | H | X | h | x | И | Ш | и | … | … | … | ш | ¯ | ||
… | … | ) | I | Y | i | y | Й | Щ | й | … | … | … | щ | | ||
A | … | … | * | : | J | Z | j | z | К | Ъ | к | … | … | … | ъ | ¸ |
B | … | … | + | ; | K | [ | k | { | Л | Ы | л | … | … | … | ы | ± |
C | … | … | , | < | L | \ | l | | | М | Ь | м | … | … | … | ь | № |
D | … | … | - | = | M | ] | m | } | Н | Э | н | … | … | … | э | ¤ |
E | … | … | . | > | N | ^ | n | ~ | О | Ю | о | … | … | … | ю | · |
F | … | … | / | ? | O | _ | o | ¤ | П | Я | п | … | … | … | я |
Рис. 4.1. Таблица ASCII-кодов.
Таблица кодов содержит 16 столбцов и 16 строк; каждая строка и столбец пронумерованы в шестнадцатеричной системе счисления цифрами от 0 до F. Шестнадцатеричное представление ASCII-кода складывается из номера столбца и номера строки, в которых располагается символ. Так, например, ASCII-код символа 1 есть число 3116, что по правилам перевода означает 1100012. В двоичной системе код представляется восемью разрядами, т.е. двоичный ASCII-код символа 1 есть 001100012.
Данная таблица делится на две части: столбцы с номерами от 0 до 7 составляют стандарт кода – неизменяемую часть; столбцы с номерами от 8 до F являются расширением кода и используются, в частности, для кодирования символов национальных алфавитов. В столбцах с номерами 0 и 1 находятся управляющие символы, которые используются, в частности для управления принтером. Столбцы с номерами от 2 до 7 содержат знаки препинания, арифметических действий, некоторые служебные символы, а также заглавные и строчные буквы латинского алфавита. Расширение кода включает символы псевдографики, буквы национальных алфавитов и другие символы.
На рис. 4.1 в качестве национального выбран русский алфавит. Пустые ячейки означают, что они не используются, а ячейки с многоточием содержат символы, которые умышленно не показаны.