Открыть сервисСервис

Кодирование информации: принципы и стандарты

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

Основные понятия

Кодирование опирается на три ключевых элемента:

  • Алфавит — конечный набор допустимых символов (например, латиница, кириллица, набор служебных знаков).
  • Кодовая таблица — правило соответствия «символ → код».
  • Код — последовательность битов (в цифровых системах) или сигналов (в аналоговых), представляющая символ.

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

Текстовые кодировки

ASCII

Первой широко применяемой кодировкой стала ASCII (American Standard Code for Information Interchange), принятая в 1963 году. Она использует 7 бит на символ, что даёт 128 комбинаций: латинские буквы, цифры, основные знаки пунктуации и управляющие символы (перевод строки, возврат каретки). Кириллица в ASCII не представлена, поэтому для русского языка потребовались расширения.

Кодировки с поддержкой кириллицы

В СССР и России последовательно использовалось несколько стандартов:

КодировкаГодыБит на символОсобенности
ГОСТ 19768-74с 19748Стандартный набор для ЭВМ «Электроника», Ё/ё отсутствовали в исходной версии
KOI-8с 19838Разработана в СССР; русские буквы кодируются так, что при 7-битном режиме получается транслит
Windows-1251с 19958Кодировка Microsoft для кириллицы; Ё присутствует
ISO 8859-5с 19888Международный стандарт с кириллицей

Принцип KOI-8 заслуживает отдельного пояснения: в нём старшие биты русских букв совпадают с латинскими эквивалентами («а» → «a», «б» → «b»), поэтому при потере старшего бита текст остаётся читаемым транслитерацией.

Unicode

Проблема множества несовместимых кодировок привела к созданию Unicode — проекта, начатого в 1988 году и реализованного в 1991 году. Unicode задаёт единый пространство кодов для всех письменностей мира: более 149 000 символов из 159 письменных систем, включая кириллицу, иероглифы, эмодзи.

Ключевое различие — между кодовой точкой (числом, например U+0416 для «Ж») и кодировкой (способом записи этих чисел в байты):

  • UTF-8 — переменная длина, от 1 до 4 байт; совместима с ASCII; наиболее распространена в файлах и сети.
  • UTF-16 — переменная длина, 2 или 4 байта; используется в Windows API и Java.
  • UTF-32 — фиксированные 4 байта на символ; редка из-за неэкономичности.

В UTF-8 кириллические буквы занимают 2 байта, латинские — 1 байт, что делает формат компромиссным для смешанных текстов.

Кодирование данных для хранения и передачи

Кодирование Хаффмана

Алгоритм Хаффмана (1952) строит префиксный код: символам с большей частотой присваиваются более короткие коды. Для текста на русском языке буквы «е», «о», «а» получают коды длиной 2–3 бита, а редкие «ф», «ъ» — 8–10 бит. Сжатие достигается за счёт разной длины кодов и отсутствия разделителей.

Код Рида — Соломона

В системах с гарантированной доставкой (CD, DVD, QR-коды, цифровое телевидение, связи NASA) применяется код Рида — Соломона (1960). Он добавляет к данным избыточные символы, позволяющие восстановить утраченные фрагменты без повторной передачи. Именно этот код обеспечивает читаемость поцарапанного диска или QR-кода с повреждённым углом.

Кодирование линий (линейное кодирование)

В телекоммуникациях под кодированием понимают преобразование цифрового потока в сигнал канала:

  • NRZ — без возврата к нулю: «1» — высокий уровень, «0» — низкий; просто, но возможна потеря синхронизации на длинных последовательностях одинаковых бит.
  • Манчестерское кодирование — каждый бит содержит переход; синхронизация гарантирована, но ширина полосы удваивается. Применяется в Ethernet.
  • Кодирование 4B/5B — группа 4 бит заменяется 5-битовым кодом с гарантией переходов; используется в Fast Ethernet и FDDI.

Кодирование в других областях

Квантование — дискретизация непрерывного сигнала по амплитуде; основа цифрового звука (PCM, 16 бит для CD) и видео.

Сжатие с потерями (JPEG, MP3) — отбрасывание информации, малозаметной для восприятия, что даёт многократное уменьшение объёма.

QR-код — двумерный штрихкод, разработанный в 1994 году японской компанией Denso Wave; содержит до 7089 цифр или 4296 букв в кодировке UTF-8 и включает коды коррекции ошибок Рида — Соломона.

Принцип двоичного кодирования

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

Историческая справка

Системы кодирования предшествуют электронике: телеграфный код Морзе (1838) сопоставлял буквы последовательностям точек и тире разной длины, а пятибитовый телетайпный код Бодо (1870-е) стал прообразом байтового кодирования. Переход к 8-битному байту произошёл в 1960-е годы вместе с развитием компьютеров IBM и DEC.

Источники

  • Р. С. Рутковский. Кодирование и сжатие информации
  • К. Хенни, К. Найман. Кодирование и сжатие данных
  • Unicode Standard, Version 15.0
  • ГОСТ 19768-74. Наборы кодов для обработки русского языка
  • К. Шеннон. Работа по теории информации
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru