Тексты для дополнительного чтения

Клод Элвуд Шеннон

Шеннон

Клод Э́лвуд Ше́ннон

(30.04.1916 — 24.02.2001)

Инженер, криптоаналитик и математик Клод Элвуд Шеннон родился в городке Петоски штата Мичиган (США). В детстве Шеннон увлекался математическими головоломками, делал модели самолётов. В 1936 году Клод Шеннон получил степень бакалавра по электронике и математике Мичиганского университета.

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

С 1941 года Клод Шеннон работал в Bell Labs над разными проектами. Одними из таких проектов были криптография и кодирование речи. В 1949 году была опубликована его работа в этой области — «Теория связи в секретных системах».

Основу теории информации Клод Шеннон опубликовал в работе «Математическая теория связи» в 1948 году. В этой работе Шеннон использовал методы теории вероятностей Норберта Винера, ввёл понятие информационной энтропии как меры неопределённости информации в сообщении.

Также Клод Шеннон занимался изучением теории игр, создавал различные устройства, в том числе логические машины, продолжая работы Джона фон Неймана и Алана Тьюринга.

Ральф Винтон Лайон Хартли

Хартли

Ральф Ви́нтон Ла́йон Ха́ртли

(30.11.1888 — 1.05.1970)

Учёный-электронщик, специалист в области информатики, изобретатель Ральф Хартли родился в городке Спрусмонт штата Невада. Учился в университете Юты, Оксфордском университете. Работал в научно-исследовательской лаборатории Western Electric. Там он принимал участие в создании радиоприёмника для трансатлантических тестов.

Хартли в свой работе «Передача информации» (1928) заложил основы информационной теории. Он ввёл понятие информации как случайной величины и первым попытался определить количество информации. Одной из самых важных формул этой работы является формула, которая сейчас носит имя автора — формула Хартли: i = log2 N.

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

Хартли показал, что количество информации в сообщении зависит от мощности используемого алфавита и длины сообщения.

Благодаря Хартли в настоящее время количество информации измеряется в битах.

Сэмюэл Финли Бриз Морзе

Морзе

Сэ́мюэл Фи́нли Бриз Мо́рзе

(26.04.1791 — 2.04.1872)

Изобретатель и художник Сэмюэл Морзе родился в городе Чарльзтаун штата Массачусетс в богатой семье. Морзе увлекался живописью, изучал в Англии искусство в Королевской академии художеств.

В 1825 году Морзе основал в Нью-Йорке Национальную академию дизайна. В 1835 году стал профессором начертательных искусств. После знакомства с описанием модели телеграфа Вильгельма Вебера Сэмюэл стал заниматься изобретениями.

Он интересовался открытиями в области электричества. И в 1837 году продемонстрировал проволочный телеграф, который мог отправлять и принимать сообщения. А в 1838 году совместно с Альфредом Вейлом разработал систему передачи букв точками и тире. В настоящее время этот способ записи сообщений называют азбукой (кодом) Морзе. Первая удачная демонстрация азбуки Морзе прошла в 1844 году — из Вашингтона в Балтимор передали первое сообщение.

В основе азбуки Морзе лежат три элемента — точка, тире и пауза. Например, А — «точка-тире» (·−), Б — «тире-точка-точка-точка» (−···). Код Морзе — это пример неравномерного кода. В нём коды разных символов могут иметь разную длину.

Азбука Морзе используется и в современном мире, например, когда необходимо передать зашифрованное сообщение.

Двоичное кодирование числовой информации

Двоичное кодирование информации — это запись информации с помощью двух знаков. Для двоичного кодирования в компьютерах используют цифры 0 и 1.

Чтобы записать двоичные числа, используют двоичную систему счисления.

Система счисления — это правила записи чисел с помощью цифр и правила выполнения действий с такими числами.

В математике используют 10 цифр для записи чисел — это десятичная система. В компьютерах используют 2 цифры для записи чисел — это двоичная система.

Чтобы целое положительное число перевести из десятичной системы в двоичную, можно использовать разные методы.

Метод деления. Исходное число нужно делить на 2 с остатком, пока не получится в частном 0. Затем выписать все остатки от деления в обратном порядке (от последнего к первому) (рисунок 10, а).

Табличный метод. Нужно составить таблицу степеней числа 2 от степени 0 до той степени, значение которой не больше исходного числа. Затем выбрать те степени числа 2, которые в сумме составляют исходное число (рисунок 10, б).

Метод деления Табличный метод
Рисунок 10. Перевод десятичного числа в двоичную систему:
а − метод деления; б − табличный метод

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

перевод
Рисунок 11. Перевод двоичного числа в десятичную систему

Для перевода дробных и отрицательных чисел используют другие правила.

Кодовые таблицы ASCII, ANSI и UNICODE

Для хранения, обработки и передачи текстовой информации используют специальные кодовые таблицы. Первая кодовая таблица — это таблица ASCII (American Standard Code for Information Interchange, 1963 г.). Эта таблица содержит 128 кодов (от 00000000 до 01111111). Коды таблицы ASCII — это специальные управляющие символы, «пробел», цифры, заглавные и строчные буквы латинского алфавита, знаки препинания .,: ;?!, скобки [](){} и другие знаки (рисунок 12).

Кодовые таблицы ANSI (American National Standards Institute) — это расширение кодовой таблицы ASCII. Таблица ANSI содержит 256 кодов. Первые 128 кодов повторяют таблицу ASCII. Вторая часть (128 кодов от 10000000 до 11111111) используется для кодирования символов национальных алфавитов. Например, для кодирования букв русского алфавита используют разные расширения кодовой таблицы ASCII:

  • Windows-1251 (CP-1251) для операционной системы Windows (рисунок 13),
  • KOI8-R для операционной системы Unix,
  • MacCyrillic для компьютеров фирмы Apple.

Все расширения таблицы ASCII позволяют кодировать символ с помощью 1 байта, то есть длина кода в этой таблице — 1 байт.

ASCII
Рисунок 12. Таблица ASCII
ASCII русский язык
Рисунок 13. Вторая часть кодовой таблицы ASCII для букв русского алфавита

В 1991 году была создана новая кодовая таблица UNICODE, которая содержит 220 + 216 = 1114112 кодов для кодирования всех символов всех алфавитов. Первая часть этой таблицы совпадает с таблицей ASCII. В операционной системе Windows используют кодовую таблицу UTF-16. Длина кода одного знака в кодовой таблице UTF-16 может быть 2 или 4 байта. Кодовая таблица UTF-16 удобна для быстрой обработки текстовой информации. В операционной системе Unix используют кодовую таблицу UTF-8. В этой таблице длина кода одного знака может быть 1, 2 или 4 байта. Эта таблица применяется в веб-разработке, обмене данными, хранении файлов.

Растровое кодирование

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

Пиксель (англ. pixel, picture element) — это минимальный элемент рисунка, который имеет свой цвет.

Рисунок на бумаге — это пример непрерывной информации. Чтобы закодировать такую информацию, её нужно разделить на части. Для этого на рисунок накладывают сетку — растр. Чем больше сделать ячеек сетки, тем лучше будет закодированное изображение.

Для кодирования цвета одного пикселя используется двоичное число. Для кодирования двух цветов достаточно 1 бита. Например, белый цвет — 0, чёрный цвет — 1 (рисунок 14).

Для кодирования цветных изображений используют цветовые модели, в которых каждый цвет раскладывают на составляющие. Например, в модели RGB (рисунок 15) каждый цвет раскладывают на три составляющие — красный (англ. red), зелёный (англ. green), синий (англ. blue). И яркость каждой составляющей изменяется от 0 до 255.

Кодирование
Рисунок 14. Кодирование чёрно-белого рисунка
RGB
Рисунок 15. Цветовой куб RGB

Кодирование с помощью модели RGB лучше всего описывает цвет, который излучается устройством, например экраном монитора. А для печати изображений используют цветовую модель CMYK (рисунок 16). В этой модели каждый цвет раскладывают на четыре цвета — голубой (англ. cyan), пурпурный (англ. magenta), жёлтый (англ. yellow) и чёрный (англ. black).

RGB-CMYK
Рисунок 16. Цветовые модели RGB и CMYK

Существуют и другие модели для кодирования информации о цвете пикселя.

Плюсы растрового кодирования — можно закодировать любое изображение, даже изображения, которые не имеют чётких границ (размытые).

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

Векторное кодирование

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

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

векторное кодирование
Рисунок 17. Разложение векторного изображения на примитивы

Векторный рисунок — это своеобразная программа, по которой изображение можно построить на заданном устройстве вывода, используя параметры этого устройства.

Плюсы векторного кодирования:

  1. если рисунок можно разложить на простейшие геометрические фигуры, то при кодировании нет потери информации;
  2. нет потери качества изображения при изменении размеров;
  3. чем меньше элементов, из которых состоит рисунок, тем меньше размер графического файла.

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