01. Измерение информации
15 мин
02. Двоичное кодирование и его практическая значимость
22 мин
03. Двоичное кодирование
43 мин
04. Информация и её свойства. Носители информации в живой природе
17 мин
05. Представление информации
39 мин
06. Информационные процессы
17 мин
Видео доступно по абонементу
Если попросить любого человека продолжить ассоциативный ряд к слову «кодировать», то, скорее всего, это будут следующие слова: код, шифр, шифровка, разведка. Общего у них, конечно, много. Ведь кодирование — это процесс замены одних символов другими таким образом, чтобы изменённый вариант мог быть понят или расшифрован только определённой группой людей, знакомой с этим кодом или шифром.
Однако цели кодирования и шифрования очень сильно различаются, ведь в кодовом замке код служит защитой от тех, кто его не знает, а вот нотная грамота удобна для тех, кто её понимает, и она тоже является кодом. В последнем случае код используется не с целью скрыть информацию, а как эволюция удобного способа записи.
По большому счёту, вокруг нас сплошные коды. Когда мы открываем художественную книгу, то информация в ней закодирована словами, которые состоят из букв алфавита. Раскодируем же мы её, когда начнём читать и мысленно представлять то, что описывает автор. Если же мы берём сборник музыкальных произведений, то ноты на бумаге кодируют музыку, которую мы слышим, когда воспроизводим ноты на музыкальном инструменте или голосом.
Комиксы могут не содержать символов алфавита, только картинки, но картинки — это тоже кодирование какого-то сюжета, только с помощью графических изображений.
Забавно, но даже горящая лампочка на любом электроприборе — это тоже закодированная информация, что прибор включён, или указание на какой-то конкретный режим работы, таймер и так далее.
Цвета светофора и фары машин являются примером цветовых кодов на дороге. Красный сигнал светофора означает остановку, зелёный — можно ехать или идти. Задние красные фары машин показывают нам, что идёт торможение, односторонние жёлтые боковые предупреждают о соответствующем повороте, а двусторонние обозначают аварийный сигнал.
Школьный звонок, который воспроизводит небольшой музыкальный отрывок — закодированный сигнал об окончании урока.
Подумайте, какие ещё коды встречаются нам каждый день. При этом эти коды понимаются всеми уже на подсознательном уровне.
И дело не только в том, что ещё в детстве значение кодов объясняется взрослыми и это знание закрепляется жизненным опытом. А в том, что вся суть этих сигналов — чтобы они были просты и понятны каждому. Основная задача таких кодов не зашифровать ту или иную информацию, а, наоборот, максимально визуализировать её, сделать доступной и понятной каждому.
Есть более специфические коды, такие как код Брайля, код Морзе, но и про них большинство слышало. Азбука Морзе, «морзянка», код Морзе — способ знакового кодирования, представление букв алфавита, цифр, знаков препинания и других символов последовательностью сигналов: длинных (тире) и коротких (точек).
Шрифт Брайля (фр. Braille) — рельефно-точечный тактильный шрифт, предназначенный для письма и чтения незрячими и плохо видящими людьми.
Дорожные знаки, которые мы видим с детства и часть из которых знает каждый, но все не знает никто, – тоже пример кодирования.
С электрическими схемами вы познакомитесь на уроках физики в 8-м классе, это также пример кодирования реальной электрической цепи с помощью специальных условных обозначений.
Можно найти много различных определений кодирования. Для нас же важно кодирование как процесс преобразования сигнала из формы, удобной для непосредственного использования информации, в форму, удобную для передачи, хранения или автоматической переработки. Так как нас интересует взаимодействие вычислительной техники с информацией.
Тогда становится интересно, как же нужно закодировать информацию, чтобы её можно было бы хранить и обрабатывать на компьютере. Вот тут мы и приходим к двоичному кодированию. Давайте разберёмся, почему двоичное, и для начала вспомним, что это такое.
Любое кодирование невозможно без объявленного алфавита, то есть конечного набора символов, который используется для кодирования информации. Само название «двоичное кодирование» заставляет задуматься о цифре два, но двойка будет присутствовать не как один из символов кода, а как количество символов в данном «алфавите» (то есть мощность алфавита). Значит, двоичное кодирование использует только два символа, символы эти числовые, начнём считать с нуля и не ошибёмся — 0 и 1.
Но почему только эти два символа? В этот момент стоит вспомнить, что из себя представляет компьютер — вычислительная машина, состоящая из электронных плат, схем, транзисторов и т. д. Раз схемы электронные, значит, машина электрическая, то есть работает благодаря электричеству. Так вот самое простое кодирование информации в таких устройствах — это есть ток (точнее, высокое напряжение), что соответствует единице, и нет тока (или очень низкое напряжение) — это 0.
Стоит вспомнить, какими были вычислительные машины в самом начале — ламповыми, то есть на вычислительной базе из электронных ламп, которые могли находиться в двух состояниях — включено или выключено.
Самым простым и экономически выгодным оказалось использовать эти два состояния, присвоив им значение 0 и 1 соответственно. По мере развития электроники и микроэлектроники можно было перейти на более сложное кодирование, но решили идти по уже «накатанному» пути и оставить двоичную систему.
Хотя были примеры троичного компьютера, где использовалась троичная система, например «Сетунь» — небольшой по меркам того времени компьютер на основе троичной логики, разработанный в вычислительном центре Московского государственного университета в 1959 году. Правда, троичная логика этого компьютера была разработана на тех же реле, просто трит, минимальная единица данного компьютера (по аналогии с битом в обычной двоичной машине), использовал два реле, соответственно, четыре возможные комбинации, одна из которых не использовалась. Тем не менее возможен и другой вариант троичного кодирования информации в компьютере: кроме отсутствия заряда (троичный ноль), возможно наличие как положительного (+1), так и отрицательного (–1) заряда, что и соответствует трём возможным значениям трита — элементарной ячейки памяти. Также возможна трёхчастотная система с тремя величинами. Но все эти варианты пока более затратны и менее устойчивы, поэтому мы имеем дело с двоичными компьютерами.
Как же происходит перекодирование информации из привычного нам текста, звука и картинки в двоичный код?
Рассмотрим для начала текст. Каждой букве нужно поставить в соответствие какой-то набор нулей и единиц. Как же понять, какой именно и из какого количества символов он должен состоять? Для начала надо разобраться с количеством. Сколько букв можно закодировать, если иметь один бит, то есть одну ячейку, где можно хранить только 0 или 1? Ровно две буквы. Если мы возьмём два бита, то это две ячейки, в каждой из которых по 2 варианта, итого 4 буквы. По аналогии, в трёх битах мы получим 8 букв. Из последних двух вычислений видно, что степень и количество бит совпадает. Соответственно, возведя двойку в степень количества бит, мы получим количество символов, которое можно закодировать данным количеством бит.
И в обратном направлении, имея количество символов для кодирования, нам нужно понять, в какую степень необходимо возвести двойку, чтобы получить необходимое нам количество.
Русский алфавит состоит из 33 букв. Значит, нам нужно не меньше 6 бит, чтобы закодировать все буквы. Проверяем: два в шестой степени даёт нам шестьдесят четыре, что излишне, но два в пятой степени — только тридцать два, а этого недостаточно. Значит, одна буква кодируется шестью битами, то есть комбинацией из шести нулей и единиц (например А — 000000, Б — 000001, В — 000010 и т. д.).
По такому принципу создаются таблицы кодировок, которые хранятся внутри компьютера. При нажатии на клавиатуре любой клавиши с символом в компьютер отправляется определённый код. Это не относится к функциональным клавишам, так как их функции определяет процессор, а не таблица кодов. Отправленный код сверяется с таблицей кодировок для определения, какой букве соответствует данный код, и на экран выводится нужный символ.
Как вы понимаете, в компьютере кодируется не только русский алфавит, нужно помнить и про то, что строчные и прописные буквы также должны кодироваться отдельно. Первой пригодной кодировкой была ASCII — таблицы кодировок, в которых содержатся основные символы: английский алфавит, цифры, знаки препинания, символы национальных алфавитов (свои для каждого региона), служебные символы. Длина кода каждого символа составляла 8 бит. Однако количество символов, которое можно закодировать, равно 256, что само по себе не так уж много, учитывая все знаки препинания и всевозможные дополнительные символы, не говоря уже о различных языках.
В 1991 году был предложен новый стандарт — Unicode. Юникод, или Уникод, — это промышленный стандарт, обеспечивающий цифровое представление символов всех письменностей мира и специальных символов. Применение этого стандарта позволяет закодировать очень большое число символов из разных письменностей.
Юникод принято обозначать буквами UTF (от английского Unicode Transformation Format) и через дефис ставить число, которое указывает на разрядность кода. От UTF-8 — восьмибитный код, максимально приближённый к ASCII, до UTF-32, который позволяет закодировать несколько миллиардов позиций. Коды в стандарте Unicode разделены на несколько областей. В самом начале содержатся символы набора ASCII с соответствующими кодами.
Далее расположены области знаков различных письменностей, знаки пунктуации и технические символы. Часть кодов зарезервирована для использования в будущем.
Теперь рассмотрим более сложный процесс перевода звука в систему нулей и единиц. При этом мы говорим не о записи сочинённой мелодии в виде нот, а о записи звучания музыкального произведения, которое можно услышать. Одно и то же произведение, исполненное по одним и тем же нотам, будет различаться у разных исполнителей.
Если текст (как и ноты) дискретен, то есть состоит из отдельных элементов — букв, которые мы и кодируем, то звук непрерывен, и для начала нужно разобраться, какие именно элементы можно закодировать.
Нам понадобятся такие понятия, как амплитуда и частота волны. Мы введём их в упрощённом варианте, а более подробно вы с ними познакомитесь на уроках физики в старших классах.
Амплитуда отвечает за громкость (чем больше амплитуда сигнала, тем он громче для человека), а частота сигнала — за высоту звучания (чем выше частота сигнала, тем выше тон). Осталось непрерывную волну представить в виде маленьких участков, в которых измеряется амплитуда, то есть произвести дискретизацию, а затем определить частоту дискретизации, то есть как часто производить замеры амплитуды. От того, как часто мы измеряем и сохраняем данные, зависит точность сохранения и воспроизведения исходного звучания. Этот параметр называется частотой дискретизации: он показывает, какое количество измерений берётся в секунду.
Ещё одним параметром является глубина кодирования звука — как много вариантов амплитуды может сохранить компьютер. Это значит, что мы не можем в таблицу внести абсолютно все звуковые значения, иначе объём данных будет огромен. Соответственно, хранится ограниченный набор. То, каким именно количеством мы готовы ограничиться, и определяет глубина. Современные звуковые карты обеспечивают 16-битную глубину кодирования звука, то есть на одну запись отведено 16 бит, а это два в шестнадцатой степени, или 65 536 звуковых вариаций (или уровней сигнала).
Итак, мы волну представляем в виде крохотных кусочков. При этом чем мельче деление, тем точнее будет воспроизведение, но тем больше объём конечных данных. И у каждого такого отрезка мы измеряем амплитуду и максимально приближённое значение сохраняем в двоичном коде.
Существуют различные методы кодирования звуковой информации двоичным кодом, среди которых выделяют два основных направления: метод FM и метод Wave-Table.
Метод FM (Frequency Modulation — модуляция частоты) основан на том, что теоретически любой сложный звук можно разложить на последовательность более простых сигналов разных частот, каждый из которых можно описать кодом. Процесс представления аналоговых сигналов в виде дискретных цифровых сигналов происходит в специальных устройствах, которые называют «аналого-цифровые преобразователи» (АЦП).
Таблично-волновой метод (Wave-Table, что в переводе означает Волна-Таблица) основан на том, что в заранее подготовленных таблицах хранятся образцы звуков окружающего мира, музыкальных инструментов и т. д. Числовые коды выражают высоту тона, продолжительность и интенсивность звука и прочие параметры, характеризующие особенности звука. Поскольку в качестве образцов используются «реальные» звуки, качество звука, полученного в результате синтеза, получается очень высоким и приближается к качеству звучания реальных музыкальных инструментов.
Теперь разберёмся с переводом изображения во всё те же нули и единицы. Что можно закодировать, имея картинку? Самое простое кодирование изображения — это представление изображения в виде отдельных точек — пикселей.
Именно сетку из пикселей и представляет из себя растровое изображение (от латинского слова rastrum — грабли). В таком случае нам остаётся только указать место пикселя, а именно две координаты, и код цвета, который зависит от глубины цветового кода (по аналогии с глубиной звучания), то есть сколько цветов мы закодируем.
Однако это было актуально на заре компьютеров. Сейчас при стремлении к максимальной передаче цвета невозможно закодировать все оттенки, это приведёт к огромным объёмам данных. Поэтому решили указывать каждый цвет, описывая его три составляющие: интенсивность красного, зелёного и синего цветов, которые в него входят, ведь любой цвет можно получить смешением этих трех. Такой способ представления цветов назвали RGB-моделью, от слов Red — красный, Green — зелёный, Blue — синий.
Раз мы упомянули растровое изображение как самое простое, значит, есть и более сложный вариант: векторное изображение и его кодирование. И снова мы забегаем немного вперёд, ведь изучение векторов будет лишь в 8-м классе.
Попробуем разобраться на примере. Если мы едем на такси, то с точки зрения оплаты нам и водителю важен путь. Но с точки зрения итогового перемещения нам путь ничего не скажет: ведь оно определяется начальной и конечной точками. Если мы съездили к другу, передали ему тетрадь и вернулись домой, то перемещение будет нулевым — ведь мы оказались в той же точке, из которой выехали.
Если проехать 100 км из точки А, но не сказать куда, то можно оказаться в любой точке круга с центром в А. Чтобы уточнить итоговое местоположение, нужно указать направление. Тогда говорят не о пути, а о перемещении.
Путь (как, например, и масса) — это скалярные величины (подробнее о них вы узнаете на уроках физики), то есть нам важно только их абсолютное значение.
А перемещение — пример векторной величины, то есть такой, для которой важно не только абсолютное значение, но и направление.
и перемещение
В отличие от растрового рисунка, который представляет собой набор пикселей разных цветов, векторное изображение — это набор примитивов (линий, кривых, квадратов, кругов), описанных математическими формулами. Рисунок формируется в виде файла, который содержит данные о координатах точек и о линиях, пересекающих опорные точки.
Кодировать координаты и формулы проще, так как это дискретные величины, состоящие из символов, которые мы кодировать уже умеем. Благодаря такому представлению векторного изображения при сильном увеличении или растягивании не ухудшается его качество, в растровом же изображении пиксель в какой-то момент из небольшой «точки» превратится в большой квадрат, что повлияет на качество изображения.
Выбор кодирования графической информации, в растровом или векторном виде, зависит от конкретных задач.
Теперь вы знаете, чем кодирование отличается от шифрования и почему компьютеру проще работать с нулями и единицами. А также как всё привычное нам превращается в эти нули и единицы!
Список литературы
Босова Л. Л., Босова А. Ю. Информатика. 7 класс: учебник. — М.: БИНОМ. Лаборатория знаний, 2023.
Домашнее задание
Чем кодирование отличается от шифрования?
Приведите примеры кодирования информации, с которыми вы сталкиваетесь в повседневной жизни.
Почему для кодирования компьютерной информации используется всего два символа?
Сколько различных символов можно закодировать шестью битами?
От каких величин зависит точность сохранения и воспроизведения звуковой информации?
В чём различие кодирования растрового изображения и векторного изображения?