В
прошлой заметке про информатику на меня действительно нашло затмение. Однако, под чутким руководством коллеги
pythonchik я осознал свои заблуждения и встал на путь истинный.
Тем не менее, изложение материала по
приведенной в той заметке ссылке я считаю очень запутанным.
Вот как этот материал излагал бы я.
Тема урока: Кодирование информации и вычисление информационного объема сообщения.
Теория
1. Все сообщения состоят из символов алфавита. Например, этот текст состоит из символов русского алфавита.
2. Символ - это минимальная неделимая частица алфавита. Например, символами русского алфавита являются буквы "а", "б", "в" и так далее.
3. Мощность алфавита - это количество символов, из которых состоит алфавит. Например, мощность русского алфавита - 33 символа.
4. Теоретически, любой алфавит может использоваться сам по себе, без какого либо кодирования. В этом случае каждый символ алфавита означает сам себя и имеет самостоятельный смысл. Например, в бумажной книге каждая буква означает сама себя, никакого кодирования нет.
5. Но на практике часто бывает нужно закодировать один алфавит с помощью другого алфавита. Например, в компьютере, на самом деле, нет никаких букв, только цифры. Поэтому, чтобы компьютер понимал буквы "человеческого алфавита", их нужно кодировать с помощью специального "машинного алфавита".
6. Таким образом, при кодировании используется два алфавита - кодируемый и кодирующий.
7. Один символ кодируемого алфавита кодируется несколькими символами кодирующего алфавита.
8. Мощность кодируемого алфавита определяется по формуле N=Mi, где M - мощность кодирующего алфавита, а i - количество символов кодирующего алфавита, которыми закодирован кодируемый алфавит.
9. Особая оговорка! Если нет отдельных указаний, то следует считать, что мощность кодирующего алфавита - 2 символа. Все современные компьютеры работают с двумя символами, единицей и нулем, поэтому все расчеты делаются исходя из этого факта.
Практика
Как уже говорилось, компьютер ничего не знает про буквы. Чтобы на компьютере можно было писать буквы, их требуется кодировать. В качестве кодирующего алфавита используются два символа машинного алфавита - 0 и 1. Таким образом, мощность машинного алфавита - два символа.
Чаще всего, хотя и не обязательно, для кодирования одного символа человеческого алфавита в компьютере используется восемь символов машинного алфавита. Вот как это выглядит внутри компьютера:
00100110 Эти восемь нулей и единичек кодируют один символ - &.
А сколько всего символов может быть закодировано с помощью восьми нулей и единичек? Ответ можно посчитать по формуле N=Mi. Мощность кодирующего алфавита - 2, количество кодирующих символов - 8.
N=28 = 256
Т.е. с помощью восьми нулей и единичек можно закодировать 256 символов. Иначе говоря, с помощью двух символов машинного алфавита (кодирующий алфавит) можно закодировать 256 символов человеческого алфавита (кодируемый алфавит). В эти 256 символов отлично помещаются русские буквы, латинские буквы, знаки препинания и всякие разные знаки, вроде упоминавшегося выше знака &.
Теперь решим простую задачу
Объем сообщения, содержащего 4096 символов, равен 1/512 части Мбайта. Какова мощность алфавита, с помощью которого записано это сообщение?
Решение:
Мощность алфавита N=Mi. M известно, оно всегда равно 2. Значит, нам нужно узнать i - количество символов кодирующего алфавита, которыми закодирован один символ кодированного алфавита.
Для этого 1/512 Мбайта символов кодирующего алфавита поделим на 4096 символов кодированного алфавита.
Объем 1/512 Мбайта это 1024/512 = 2 Кбайта = 2*1024 = 2048 байт = 2048*8 = 16384 бита.
Значит i =
16384/4096 = 4 бита на символ.
Отсюда мощность кодированного алфавита = 24 = 16 символов.
А теперь решим сложную задачу
Милиционер Дядя Степа хочет передать сообщение своему коллеге на соседнем перекрестке с помощью светофора. Сколько светофоров понадобится Дяде Степе, если он хочет использовать все буквы русского языка?
Решение:
В данном случае кодируемым алфавитом является русский язык. В русском языке 33 буквы, значит мощность кодируемого алфавита - 33 символа.
Кодирующим алфавитом будут светофорные сигналы. Светофор имеет 5 сигналов: красный, желтый, красно-желтый, мигающий желтый, зеленый. Стало быть, мощность кодирующего алфавита - 5 символов.
Вспоминаем, как вычисляется мощность кодируемого алфавита: N=Mi. В отличие от простой задачи, тут у нас M не будет равно 2. В случае со светофорами M будет равно 5. Значит, N=5i.
Мы знаем, что мощность русского языка равна 33. Значит , N=33. Тогда формула будет 33=5i. Вычислим i.
Если взять i=2, то 52 будет равно 25. Т.е. двумя светофорами можно закодировать 25 символов. 25 меньше, чем 33, а это значит, что двух светофоров будет недостаточно для кодирования всех букв русского языка.
Если взять i=3, то 53 будет равно 125. Т.е. двумя светофорами можно закодировать 125 символов. 125 больше, чем 33, а это значит, что трех светофоров будет достаточно для кодирования всех букв русского языка.
Остается даже много лишних символов, так что с помощью трех светофоров Дядя Степа сможет не только буквы закодировать, но еще и кучу смайликов в свое сообщение вставить:)