Кодирование информации — отображение данных на кодовые слова.
Обычно в процессе кодирования информация преобразуется из формы, удобной для непосредственного использования, в форму, удобную для передачи, хранения или автоматической обработки. В более узком смысле кодированием информации называют представление информации в виде кода. Средством кодирования служит таблица соответствия знаковых систем, которая устанавливает взаимно однозначное соответствие между знаками или группами знаков двух различных знаковых систем.
Виды кодов
· Код фиксированной длины (fixed-length code) — кодирование каждого символа производится с помощью строк одинаковой длины. Также он называется равномерным или блоковым кодом.
· Код переменной длины (variable-length code) — кодирование производится с помощью строк переменной длины. Также называется неравномерным кодом.
· Префиксный код — код, в котором, никакое кодовое слово не является началом другого. Аналогично, можно определить постфиксный код — это код, в котором никакое кодовое слово не является концом другого.
Все вышеперечисленные коды являются однозначно декодируемыми (англ. uniquely decodable) — для такого кода любое слово, составленное из кодовых слов, можно декодировать только единственным способом.
Пример ы кодов
· ASCII — равномерный.
· Код Хаффмана — префиксный.
· Азбука Морзе — не является ни равномерным, ни префиксным, тем не менее, однозначно декодируемый за счет использования пауз.
Любые данные (числа, символы, графические и звуковые образы) в компьютере представляются в виде последовательностей из нулей и единиц. Эти последовательности можно считать словами в алфавите {0,1}, так что обработку данных внутри компьютера можно воспринимать как преобразование слов из нулей и единиц по правилам, зафиксированным в микросхемах процессора. Такой взгляд роднит вычислительные машины с абстрактными вычислителями (машины Тьюринга, нормальные алгоритмы Маркова).
|
Элемент последовательности из нулей и единиц (член такой последовательности) называют битом. Именительный падеж — бит.
Как определить, какое целое число представляет тот или иной битовый набор? Возможны разные способы. Например, можно считать, что представляемое число равно количеству единиц в битовом наборе ("единичная" система счисления). Такой способ позволяет представить всего k различных целых чисел от 0 до k—1, где k — длина набора. Очевидно, что этот способ неэкономный — одному и тому же числу могут соответствовать несколько различных наборов. Количество всевозможных битовых наборов длины k равно 2k, поэтому выгоднее различным наборам поставить в соответствие различные числа. Это позволит представить 2k различных чисел. Обычно рассматривают диапазон целых чисел от 0 до 2k -1.
Существует всего (2k)! (количество перестановок из 2k элементов) способов закодировать беззнаковые числа битовыми наборами. Среди всех этих теоретически возможных способов представления чисел наиболее удобен для проведения вычислений такой: битовый набор, соответствующий числу, является k-разрядной записью этого числа в двоичной системе счисления. Таким образом, можно реализовать арифметические операции над числами, используя известные школьные алгоритмы поразрядной обработки для битовых наборов.
|
Выбор способа хранения целых чисел в памяти компьютера — не такая тривиальная задача, как могло бы показаться на первый взгляд. Желательно, чтобы этот способ:
· не требовал усложнения архитектуры процессора для выполнения арифметических операций с отрицательными числами;
· не усложнял арифметические действия;
· хранил бы одинаковое количество положительных и отрицательных чисел.
ASCII - кодировка
Для кодирования букв и других символов, используемых в печатных документах, необходимо закрепить за каждым символом числовой номер – код. В англоязычных странах используются 26 прописных и 26 строчных букв (A … Z, a … z), 9 знаков препинания (.,:! ";? ()), пробел, 10 цифр, 5 знаков арифметических действий (+,-,*, /, ^) и специальные символы (№, %, _, #, $, &, >, <, |, \) – всего около ста символов. Таким образом, для кодирования этих символов можно ограничиться максимальным 7-разрядным двоичным числом (в десятичной системе счисления – от 0 до 127).
Первой такой 7-разрядной кодовой таблицей была ASCII (American Standard Code for Information Interchange), опубликованная как стандарт в 1963 г. американской организацией по стандартизации American Standards Association (ASA). Позднее эта организация стала именоваться ANSI (American National Standards Institute, https://www.ansi.org/, поэтому данную кодовую таблицу называют также и ANSI). Таблица содержала 32 кода команд или управляющих символов (от 0 до 31), большая часть которых сегодня не используется, и 95 кодов (от 32 до 127) для различных знаков, достаточных для работы с английскими текстами. Характерной структурной особенностью таблицы является то, что для преобразования прописных букв в строчные достаточно к коду буквы прибавить 32. И наоборот, отнять 32 для преобразования строчных букв в прописные. Таблица ASCII подробно изучалась в курсе «Алгоритмы и алгоритмические языки» (практика 4 символьный тип).
В последующем данная таблица ASCII была принята как стандарт ведущими международными организациями по стандартизации.