Введение в цифровую графику

         

Бинарность в теории и в жизни



Бинарность в теории и в жизни

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

Платон

Жила-была на свете тихая семейка: два брата-дегенерата, две сестрички-истерички, два племянника-шизофреника и два племянника-неврастеника.

Илья Ильф

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



Фиксированная разрядность двоичных чисел



Фиксированная разрядность двоичных чисел

"Маловато будет!" Александр Татарский


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

Информацию об этом смотрите в разд. "Понятие бита" данной главы.

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

А для получения большего количества кодов, разумеется, единственный путь состоит в увеличении разрядности двоичного числа (его удлинении). Это заставляет вспомнить и применить позиционный метод записи чисел.

Например, для записи десятичного числа 10 003 955 используются пять цифр и восемь разрядов.

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



После того как выяснилось, что



Глава 5.

Бит и кодовая таблица

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

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

Бит и кодовая таблица



Глава 5 Бит и кодовая таблица Бинарность в теории и в жизни Понятие бита Разряды и разрядность Фиксированная разрядность двоичных чисел Расчет количества кодов Расчет количества разрядов Кодовый алфавит Кодовая таблица Значения кодовой таблицы Следствие произвольности кодовой таблицы



Кодовая таблица



Кодовая таблица

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

Таким образом, в кодовой таблице представлено определенное количество строк и только два столбца:

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



Кодовый алфавит



Кодовый алфавит

Всем известно: Буква "Я"

В азбуке последняя.

А известно ли кому,

Отчего и почему?

Борис Заходер

Если выше мы определили, что код — это вообще система условных знаков, то алфавит — это перечень элементов данной кодовой системы.

Информацию об общем представлении кода смотрите в главе 4.

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

В действительности же человечество формирует системные представления об окружающем мире. Причем, очень многие элементы этой системы являются знаками. Знаки бывают естественными и искусственными.

Естественные системы связаны с закономерностями, которые открыты и описаны физикой, химией, биологией, геологией и другими точными науками, а также дополнены эмпирическими наблюдениями о природе.

Искусственные системы целиком создаются людьми. Скажем, к искусственным можно отнести знаки письменности, пиктограммы, сигналы дорожного движения и многое другое.



Определение


Кодирование — это операция отождествления двоичных чисел с дискретными значениями какой-либо предметной области.

А что касается правого столбца, то здесь, как говорится, необходимо договариваться. Когда же речь заходит о всевозможных системах кодирования, то это всегда — определенные договоренности.



Определение


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

Таким образом, бит — это своеобразный атом информации.



Определение


Разряд в арифметике — это место, занимаемое цифрой при записи числа. Например, в десятичной системе счисления цифры первого разряда — это единицы, второго разряда — десятки и т. д.

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

Кроме того, как мы уже выяснили, в двоичной системе счисления каждый разряд — это бит и его значение зависит от позиции и равно соответствующей степени числа "2".



Определение


Разрядность двоичного числа — это количество знакомест (разрядов) или количество битов, заранее отведенных для записи числа.



Определение


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



Определение


Кодовый алфавит — это минимальный перечень элементов.

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

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

И тем не менее, можно выявить, что у алфавита существует одно неизбежное свойство: количество элементов алфавита, как правило, в течение определенного исторического периода конечно.



Определение


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

Стоит обратить внимание на то, что до сих пор мы оперировали цифрами и числами, получаемыми из этих цифр при помощи позиционной системы записи. Теперь оказалось, что на самом деле это — только половина кодовой таблицы. О второй половине кодовой таблицы поговорим ниже.

Информацию о значениях кодовой таблицы см. в разд. " Значения кодовой таблицы" данной главы.

А пока поговорим о построении кодовой таблицы.

Первая проблема, которую нам предстоит решить, заключается в том, чтобы определить количество строк, т. е. мы сначала должны задаться количеством разрядов, как это выяснилось в предыдущем разделе. Но возникает следующий вопрос: а чем это определяется, какой необходимостью?

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

Таблица 5.4. Кодовая таблица для двух значений

Двоичные коды

Значения кодов

0

1

"Да!"

"Нет!"

Простота этой таблицы определяется тем, что в ней используются только элементы кодового алфавита. Если значений, которые надо кодировать, оказывается больше, чем два, то в этом случае элементы алфавита составляются в "слова", длина которых определяется разрядностью.

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

Информацию о расчете количества кодов см. в разд. "Расчет количества кодов " данной главы.

Таблица 5.5. Кодовая таблица для трех значений

Двоичные коды

Значения кодов

00

01

10

11

"Да!"

"Нет!"

"Не знаю!"

не используется



Понятие бита



Понятие бита

Человек не знал двух слов — "да" и "нет". Он отвечал туманно: "Может быть, возможно, мы подумаем".

Илья Ильф

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



Пример-метафора


Но ведь возможна и другая точка зрения, когда важнее, чтобы лампочка не горела. Любители отечественной киноклассики могут вспомнить, что в фильме "Бриллиантовая рука" как раз такая ситуация: незадачливым жуликам требовалось, чтобы погас свет в одном из номеров гостиницы "Атлантик", это был знак к началу операции. Таким образом, для них более значимым сигналом (знаком) было не горение лампочки, а, наоборот, отсутствие света.

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

Обратимся снова к табл. 5.4. Почему "нулю" мы поставили в соответствие значение "Да!", а "единице" — значение "Нет!"? Есть ли в этом какая-либо неизбежная логика?

Самый общий принцип заполнения столбца кодовой таблицы, который называется "значения", можно сформулировать так: он заполняется произвольной информацией в произвольном порядке!



Пример-метафора


Вместе с тем, ситуацию нельзя доводить до абсурда, например устанавливать договоренность о способах пересечения каждого отдельного перекрестка. Разумеется, что договоренности, которые затрагивают огромное количество участников, стараются стандартизировать. Те же правила дорожного движения являются международными.



Пример-метафора


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

По отношению к информации в бытовом смысле ("Коля (или Оля) дома!") информация в битовом измерении (1 бит) является такой же абстракцией, как число по отношению к конкретным предметам.

Причем, если кого-то волнует, как же мы отказываемся от качества информации (сообщения), а измеряем ее сугубо абстрактно, то это обычный способ наук и технологий. Можно вспомнить аналогичные случаи из школьной математики.



Пример-метафора


Разрыв тока в цепи используется для сигнализации в мелких торговых предприятиях или офисах. Если сигнальная лампочка горит, это свидетельствует о том, что объект в сохранности...

Говоря математически, отвлекаясь от качественного содержания (магазинов, грабителей и пр.), можно сказать, что с помощью одной лампочки (одного разряда или одного бита) удается кодировать два значения, например "ноль" или "единицу" (рис. 5.1).



Пример-метафора


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



Пример-метафора


Можно представить двоичные разряды в виде ячеек, входящих в состав слова-"ящика". Эти ячейки не могут быть пустыми, они должны получить какое-то значение, в данном случае "0" или "1".

Код "11" обязательно присутствует в таблице, хотя и не используется в данном случае, но, кто знает, может быть, этому коду в другой ситуации найдется достойное применение.



что каждому студенту необходимо присвоить



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

Первый вопрос, связанный с количеством строк этой таблицы и количеством разрядов в двоичном коде, решается довольно просто: сосчитать количество присутствующих студентов и экстраполировать это число на определенный исторический период ("на вырост"). Затем рассчитать необходимое количество разрядов и составить список кодов, начиная с кода "00...00" и заканчивая кодом "11... 11".

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



в базах данных всевозможных товаров.



Кодирование широко применяется в базах данных всевозможных товаров. Разрабатываются специальные коды прейскуранта, в которых любой товар получает индивидуальный номер, т. е. цифровой код. Эти прейскурантные коды не очень интересны покупателю, но чрезвычайно важны для изготовителей, для торговли или для ремонтных служб. Для автоматизации ввода кодов изобретена технология штрих-кодов, что представляет собой надстройку кода над кодом, т. е. числовой код кодируется графически, чтобы считывающему сканеру легче было воспринимать информацию из толщин и промежутков между этими линейками. С числами задачу сканирования и распознавания решить было сложнее: нужно очень точно позиционировать площадь считывания (что возможно обеспечить только со стандартными объектами, например коды цифр на почтовых конвертах).

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

Разберем более простой пример. Предположим, что необходимо закодировать четыре ахроматических цвета: белый, черный, темно-серый, светло-серый.

Каким образом станем действовать? С точки зрения левого (числового) столбца кодовой таблицы проблема решается просто: для четырех значений требуется четыре кода, а для формирования четырех двоичных кодов (двоичных чисел) идеально подходят два разряда (диапазон от "00" до "11").



и электронной почты постоянно сталкиваются



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

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



Однако несовпадение кодовых таблиц возможно



Однако несовпадение кодовых таблиц возможно и в самых обычных текстовых редакторах. Причина кроется в "устройстве" шрифтовых файлов, по одному и тому же коду, как по адресу, могут находиться как русские, так и дополнительные символы латиницы. В этом случае одни и те же коды (заметьте, правильные коды!) могут вызвать неадекватный результат, если произошла подмена шрифтовых файлов.

Резюме

В компьютерных технологиях основополагающую роль играет понятие бита. Последний определяется как минимальное количество информации, равное наличию или отсутствию сигнала. Использование бита обеспечивает количественное измерение информации.
Двоичная система счисления идеально совпадает с понятием бита. Это дает возможность передавать информацию одновременно с ее учетом.
Любое двоичное число — это совокупность битов, а каждый бит — это один разряд, значение которого зависит от позиции и равно соответствующей степени числа "2".
Разрядность двоичного числа — это количество знакомест, количество разрядов, количество битов, заранее отведенных для записи числа, что обеспечивает определенный набор возможных двоичных чисел, которые могут служить кодами.
Двоичное слово — последовательность битов, рассматриваемых как единое целое. Слово имеет определенное, хотя и произвольное, значение (в соответствующем кодовом алфавите).
Количество разрядов n, необходимых для обеспечения N кодов, можно вычислить по формуле: n=logN.
Кодовый алфавит — это минимальный перечень элементов. Алфавит характеризуется стабильностью состава в течение определенного исторического периода.
Кодовая таблица — это совокупность кодов и их значений. Длина кодовой таблицы может быть произвольной, но ограничивается возможностями технической реализации.
Значение кода не является законом природы — это всякий раз результат условности, результат договоренности заинтересованных сторон. Значимые для человечества или большой группы людей кодовые таблицы приобретают статус стандартов.
В общем случае, кодовая таблица может включать любое содержание, если мы сумеем его подготовить к кодированию. Вопрос состоит в том, как готовить аналоговую информацию к кодированию. В главе 6 будет рассмотрено преобразование абстрактного сигнала, а в последующих главах части III речь пойдет об особенностях преобразования изобразительной информации.

Рассмотрев выше подробно формальные (математические) основы построения кодовых таблиц, необходимо обратиться к "плану содержания" и поставить вопрос: каким общим качеством должны обладать те значения, которые мы собираемся кодировать? Условие это единственное и необходимое. Без него нельзя начать процесс кодирования. Но об этом мы поговорим уже в следующей главе.

нельзя рисовать черным по черному



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

Очень многие аспекты жизни основываются на двух противоположных качествах: "день — ночь", "черное — белое", "звук — тишина", "плюс — минус", "север — юг" и т. д. То есть минимальной является дихотомия, состояние из двух элементов, причем неразрывное. Нельзя так разрезать магнит, чтобы отделить полюса друг от друга.



и научились писать числа самым



Когда-то и нас с вами учили считать "на пальцах" или "на яблоках": детское мышление конкретно (кстати, и обывательское — тоже). Но постепенно мы с вами забыли о яблоках и научились писать числа самым "абстрактным" образом. Например, когда мы вычисляем "2 + 2", уже не играет роли, что мы имеем в виду (те же яблоки или, например, доллары), нас интересуют только чисто количественные отношения.

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

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



Если бы люди каждый раз



Если бы люди каждый раз для выполнения счета рисовали яблоки, человечество бы никогда не дошло до высшей математики. Потому что с их помощью невозможно решать какие бы то ни было математические задачи. Ученые, создав формальный способ, с его помощью решают математические проблемы вполне успешно.

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

Следовательно, бит — это абстрактное понятие, которое обеспечивает количественное измерение информации. Так вот, когда мы переходим от естественного языка "да — нет" к математике, компьютерным технологиям, то там эти два состояния тоже придется обозначать математически.



может быть записано различными способами



Десятичное число "2" может быть записано различными способами в зависимости от разрядности двоичного числа: как "10", если разрядность равна двум; как "0010", если разрядность равна четырем; как "00000010", если разрядность равна восьми. Обратите внимание, что последний вариант соответствует записи десятичного числа "2" в пределах одного байта информации.

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

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

В слове, равном одному байту,



В слове, равном одному байту, — восемь двоичных разрядов, и десятичное число "2" записывается в двоичной системе счисления следующим образом: 00000010. Слово может быть равно двум и более байтам, поэтому то же число может получить и такой вид: 00000000 00000010. Это означает, что если число занимает меньше значимых разрядов, чем отведено для его записи, как в данном примере, то все предыдущие разряды заполняются нулями. И поскольку эти нули занимают старшие разряды, они действительно не имеют значения.



Если поставить задачу кодирования десятичных



Если поставить задачу кодирования десятичных цифр, для этого потребуется 4 двоичных разряда и еще останется 6 свободных кодов, т. к. 24= 16.

Количество разрядов можно вычислить по формуле, обратной рассмотренной ранее (N = 2n). Для степенной зависимости обратной является логарифмическая функция:

п = log2N, где п — это количество двоичных разрядов, а N — количество кодов.



Если потребуется эту таблицу продолжить,



Если потребуется эту таблицу продолжить, например вместо трех значений (потенциально четырех) необходимо будет шесть значений, то сделать это можно, только увеличив количество разрядов, поскольку при данном количестве разрядов (два разряда) кодовая таблица не позволяет добавлять новые значения. Но сколько разрядов необходимо добавить? Это легко сосчитать: если два разряда мало, то положим три. Три разряда обеспечивают длину таблицы в восемь строк, т. е. больше, чем требуется. Строим новую таблицу: первое значение в ней будет "000", последнее — "111".



Расчет количества кодов



Расчет количества кодов

"Ой, теперь он и тебя сосчитал!" — заскулил Теленок.

Альф Прейсен

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



Расчет количества разрядов



Расчет количества разрядов

В предыдущем разделе мы рассмотрели возможность расчета количества кодов, если известно количество разрядов. Но что делать, если известно количество требуемых кодов и необходимо определить количество разрядов?

Вернемся к моделированию с помощью лампочек и представим себе, что требуется отображать на каком-либо табло, скажем, 12 двоичных сигналов. Для этого необходимо рассчитать, какого минимального количества лампочек достаточно, чтобы обеспечить передачу этих сигналов.



Разряды и разрядность



Разряды и разрядность

Обратимся к табл. 4.6 и выпишем ряд десятичных чисел, которые равны "круглым" двоичным числам. В этот ряд входят следующие десятичные числа: "2", "4", "8", "16", "32", "64", "128", "256", "512" и, наконец, сакраментальное "1024". Все эти числа представляют ряд последовательных степеней числа "2". Каждое из названных чисел чрезвычайно активно используется в компьютерных технологиях. Читатель, видимо, убеждался в этом не один раз.

Мы оперируем каким-либо двоичным числом, а любое двоичное число — это совокупность битов, т. е. "1" и "О". Отсюда получается, что каждый бит — это один разряд или одна позиция в двоичном числе.



Коды, создаваемые с помощью одной лампочки



Рис. 5.1. Коды, создаваемые с помощью одной лампочки

Теперь усложняем задачу: используем два разряда, или, в нашей "научной" терминологии — две лампочки. Сколько сигналов, или кодов, мы можем с их помощью обеспечить?

Это зависит от того, сколько комбинаций (битовых "слов") мы можем составить.



Коды, создаваемые с...



Рис. 5.2. Коды, создаваемые с помощью двух лампочек

Таблица 5.1. Количество кодов, создаваемых тремя двоичными разрядами

Номер по порядку

Двоичный код

Номер по порядку

Двоичный код

1

000

5

100

2

001

6

101

3

010

7

110

4

011

8

111

В результате получилось восемь кодов, которые представляют диапазон от "все лампочки потушены" до "все лампочки горят".

Мы не зря использовали условные обозначения для лампочек ("ноль" и "единицу"), ведь по сути дела нам требовалось написать двоичные числа, которые являются кодами десятичных чисел от "О" до "7". Для этого требуется два двоичных разряда.

Можно продолжить наращивание количества разрядов и составить таблицу кодов для четырех двоичных разрядов (табл. 5.2).

Таблица 5.2. Количество кодов, создаваемых четырьмя двоичными разрядами

Номер по порядку

Двоичный код

Номер по порядку

Двоичный код

1

0000

9

1000

2

0001

10

1001

3

0010

11

1010

4

0011

12

1011

5

0100

13

1100

6

0101

14

1101

7

0110

15

1110

8

0111

16

1111

В результате получилось шестнадцать кодов, которые также представляют диапазон от "все лампочки потушены" до "все лампочки горят", т. е. десятичные числа от "О" до "15".

Полагаем, что дальше продолжать нет необходимости: принцип получения кодов, кажется, ясен, и теперь можно составить таблицу (табл. 5.3) зависимости между количеством двоичных разрядов (битов) и количеством кодов, которые можно получить с их помощью.

Таблица 5.3. Количество разрядов и количество кодов

Количество разрядов двоичного числа

Количество кодов

Количество разрядов двоичного числа

Количество кодов

1

2

6

64

2

4

7

128

3

8

8

256

4

16

9

512

5

32

10

1024

Обратите внимание на то, что каждое последующее количество кодов больше предыдущего в два раза. Это означает, что количество разрядов является степенью при основании "двойки". Если значение степени равняется количеству разрядов, то общее количество кодов можно вычислить по чрезвычайно простой формуле:

N=2n, где N — это количество кодов, а n — количество двоичных разрядов.

С помощью приведенной формулы всегда можно определить, сколько потенциальных кодов получается в случае использования определенного количества разрядов.

Не стоит забывать, что эти рассуждения интересуют нас исключительно в связи с компьютерными технологиями, т. к. каждый разряд требует аппаратного размещения. Отсюда можно поставить обратную задачу: как рассчитать количество разрядов, если известно количество кодов, которое необходимо обеспечить для кодирования известной совокупности данных.



Следствие произвольности кодовой таблицы



Следствие произвольности кодовой таблицы

Но далеко не всегда такая договоренность имеет место или правильно понимается, огромное число проблем возникает именно из-за того, что "кто-то кого-то не так понял". Иногда это случайные ситуации, а иногда и преднамеренная дезинформация в форме "непонятой условности".

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

Кодирование четырех ахроматических цветов описано в главе 7.



Справка


Слово "дихотомия" происходит от греческого "dichotomia", что означает "разделение надвое" (на две эквивалентные, но противоположные части), а отсюда "дихотомическое деление на пары" означает способ классификации, когда два множества, понятия, термина относятся к одному явлению, но при этом противоположны, например "плюс" и "минус" в электричестве. Философские школы давно создавали систему мироздания, используя дихотомические пары, например "огонь" и "земля" — это первоэлементы в элейской философской школе (Парменид), "янь" и "инь" — это начала бытия в древнекитайской философии (даосизм), "дружба" (притяжение) и "вражда" (отталкивание) — это противоборствующие силы в теории Эмпидокла. Современные теории также зачастую строятся на базе дихотомии, например "материальное" и "идеальное", "экстраверсия" и "интроверсия" (К. Юнг), "субъект" и "объект", "дискретное" и "континуальное", "анализ" и "синтез".

Поэтому и первичный элементарный алфавит должен состоять, как минимум, из двух элементов. Это фундаментальное свойство нашло свое отражение в понятии бита.



Справка


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

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



Справка


"Бит" — слово искусственное и представляет собой сокращение от английских слов binary digit, что означает парадоксальное сочетание "двоичная единица", а в русский язык оно перешло простой транслитерацией.



Справка


Транслитерация происходит от двух латинских слов "trans", что означает "через", и "lit(t)era" — "буква". С помощью транслитерации обеспечивается передача слов или текста одного алфавита, в данном случае английского, средствами другого алфавита, в данном случае русского. Часто используется при передаче имен собственных или терминов.

Исходя из определения понятия "бит", минимальное количество информации — это ответ на любой вопрос, который имеет только один из двух ответов: "да" или "нет". Один бит информации — это утвердительный или отрицательный ответ на вопрос, требующий только "да" или "нет". Подчеркнем: именно или.



Справка


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

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

Информацию о двоичной системе счисления смотрите в разд. "Двоичная система счисления" данной главы.

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



Справка


Логарифм данного числа N при основании а является показателем степени у, в которую нужно возвести число а, чтобы получить N, т. е. N = ау.

Такой логарифм обозначается обычно как logаN, а равенство у = !одах определяет логарифмическую функцию. Основные свойства логарифма позволяют заменить умножение, деление, возведение в степень и извлечение корня более простыми действиями сложения, вычитания, умножения и деления, т. к. при умножении степени складываются, при делении — вычитаются и т. д.

Логарифмы открыты шотландским математиком Дж. Непером и швейцарским математиком И. Бюрги в начале XVII века. Термин "логарифм" возник из греческих слов "logos", что означает "соотношение", и "arithmos" — "число".



Важная мысль


Значения кодовой таблицы определяются логикой предметной области.



Важная мысль


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



Важная мысль


Бит— это абстрактное понятие, которое обеспечивает количественное измерение информации, доступное компьютерным системам.

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



Важная мысль


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



Важная мысль


С помощью конечного количества цифр (не менее двух) и позиционного метода записи можно отображать бесконечное количество чисел.

Но у двоичных чисел, поскольку они применяются в компьютерных технологиях, есть одна особенность: двоичные числа, как правило, формируются с фиксированной разрядностью. Такая совокупность разрядов получила название "слов".



Важная мысль


Таким образом, мы выяснили, что для передачи определенного количества кодов (сигналов и чего угодно) необходимо выбрать число двоичных разрядов, равное степени, в которую необходимо возвести число "2", чтобы получить число, соответствующее количеству кодов или слегка превышающее его.

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

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



Важная мысль


Алфавит характеризуется стабильностью состава в течение определенного исторического периода.

Пример

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

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



Важная мысль


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

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



в виде знака. Что оно



Возьмем изображение яблока в виде знака. Что оно может обозначать? Какая связь между яблоком и известной фирмой? Никакой! Эту связь установили условно, "договорились!". Ведь в природе такой связи не было.

В самом деле, совершенно не очевидно, если вернуться к ахроматическим цветам, какой код правильнее (выгоднее, удобнее, рациональнее) присвоить, например, черному цвету. Два нуля, две единицы, а может быть, сохранить порядок, который приведен выше? Рассуждая таким образом, мы вынуждены признать, что привлекаемая нами логика носит произвольный характер, она не вызвана какими-либо однозначными закономерностями.

В качестве примера, видимо, вполне рационально присвоить коды, начиная с белого и заканчивая черным. Тогда, следуя этой логике (подчеркнем еще раз, что это произвольная логика, не основанная на математических законах), белому цвету присваивается код "00", черному — код "11", а светлосерому и темно-серому оттенкам вполне логично присвоить промежуточные значения (табл. 5.6).

Таблица 5.6. Кодовая таблица для четырех ахроматических цветов

Двоичные коды

Значения кодов

00

Белый цвет

01

Светло-серый цвет

10

Темно-серый цвет

11

Черный цвет



Что касается кодирования указанных цветовых



Что касается кодирования указанных цветовых оттенков, то на самом деле ситуация иная. В системе RGB черному цвету присваивается нулевое значение. И там есть определенная логика, о которой речь пойдет ниже.
Информацию о цветовых моделях см. в части VI.

Возможны ли другие варианты таблицы? Разумеется. Причем, очень многие варианты носят совершенно произвольный характер, например "темно-серый, белый, черный, светло-серый". Для компьютера все варианты абсолютно равнозначны, а для человека важнее всего очевидная логика, поэтому мы расставили значения в определенном порядке, следуя логике перехода тонов от белого до черного. Соответственно, человеку понятнее и логика сортировки чисел, скажем, от "00" до "11" или, наоборот, от "11" до "00", но вот связь двух цепочек (цепочка чисел и цепочка значений) не имеет отчетливых логических зацепок.



отсутствие отчетливой логики не является



Кстати, отсутствие отчетливой логики не является препятствием для использования. Разве везде и всюду действует какая-то разумная логика? Довольно часто задаются какие-либо условия, которые выгодны не тем, кто их использует, а тем, кто их регулирует. Предположим, дорожное движение: иногда ставят дорожные знаки не так, как удобнее водителям и безопаснее для движения, а так, как удобнее соответствующим службам.

История компьютерных технологий также изобилует подобными фактами. Вот только два примера. Знаменитая комбинация клавиш <Ctrl>+<Alt>+<Del> для "горячей" перезагрузки компьютера была встроена в клавиатурный код только потому, что система первых PC была склонна к зависаниям (что благополучно сохранилось до наших дней). В основе современных операционных систем, разрабатываемых компанией Microsoft, лежит крайне несовершенное ядро MS-DOS, которое в спешке было разработано в далеком 1980 году.

Это очень важное обстоятельство: выбор значения и его соответствие кодам носят принципиально произвольный характер. Но вместе с тем, следует отметить, что в области, подвергаемой кодированию, имеется та или иная логика, та или иная степень классификации и т. д., поэтому предпочтительнее руководствоваться логикой тех значений, которые мы используем в правой части кодовой таблицы.



Очень часто люди гуманитарного склада



Очень часто люди гуманитарного склада "попадаются" на том, что считают ноль "пустым местом", ведь, как правило, ноль "ничего не значит". На самом деле, ноль это такая же полноправная цифра или число (в данном случае это и число и цифра).



Попутно напомним, что аналоговая система



Попутно напомним, что аналоговая система передачи информации не обладает таким свойством: мы не можем, передавая сигнал, вместе с ним передавать как бы его идеальное состояние.

что вы еще не забыли



Надеемся, что вы еще не забыли о позиционном принципе записи чисел в любых математических системах счисления (значение цифр, количество которых ограничено, зависит от положения в числе, от ее позиции).

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

по этой причине хранение информации



Кстати, по этой причине хранение информации на диске не является оптимальным: информация хранится кластерами, даже если в ней записан один бит — все равно весь этот кластер заполняется. В самом деле, двоичные числа записываются также в кластерной форме: 00000001, 000001, 00001, 001, 01, 1 — это одно и то же число, записанное при помощи двоичных слов различной длины. Например, если используется запись информации байтами, то заполняется всегда восемь ячеек памяти, независимо от того, что необходимо сохранить всего один бит. В этом кроется причина нерационального расходования дискового пространства.

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

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

Но сначала необходимо решить одну задачу — рассчитать объем этой таблицы, исходя из количества двоичных разрядов.

С той же целью упрощения



С той же целью упрощения мы исключаем временной параметр, т. е. лампочки с течением времени не изменяют своего состояния.

Сначала представьте себе, что в нашем распоряжении имеется одна-единственная электрическая лампочка, с помощью которой необходимо обозначить какую-либо информацию.

Сколько отдельных кодов можно смоделировать с помощью одной лампочки? Совершенно очевидно, что она может иметь только два состояния: "горит" или "не горит". И других состояний быть не может (мы, разумеется, не учитываем ситуацию, когда лампочка неисправна или в цепи нет тока).



В обычных словах играет роль



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

Итак, рассмотрим все возможные комбинации.

Первый сигнал: обе лампочки выключены.
Второй сигнал: включена только одна лампочка слева.
Третий сигнал: включена только одна лампочка справа.
Четвертый сигнал: обе лампочки включены.
Желающие могут проверить: других вариантов не получится (рис. 5.2)! Следовательно, когда приходится использовать две лампочки (или два двоичных разряда), всегда получаются четыре кода.

До сих пор все кажется достаточно очевидным, но следующий шаг ("рассмотрим более сложный вариант из трех лампочек, или трех разрядов") всегда вызывает в аудиториях, далеких от математики, ошибочные мнения. Обычно чаще всего называют числа "6" или "9" (видимо, по аналогии: "три плюс три" или "три в квадрате"). И то и другое — ошибка.

Для преодоления ошибки составим таблицу, представив горящую лампочку "единицей", а негорящую — "нулем" (табл. 5.1).



Причем следует учесть, что избыток



Причем следует учесть, что избыток не приветствуется, т. к. ставится условие определить минимальное количество, хотя, может быть, некоторый избыток и неизбежен. Конечно, для решения указанной задачи можно использовать и 12 лампочек, но вряд ли это будет рациональным решением.

Итак, для того чтобы определить количество разрядов ("лампочек") для 12 сигналов, следует обратиться к таблице из предыдущего раздела (см. табл. 5.3), но исходить в своих расчетах из второго столбца: какое число, ближайшее к указанному, обеспечивает выполнение этой задачи.

Разумеется, во втором столбце таблицы отсутствует такое конкретное число, как "12". Зато две строки являются ближайшими к нему - "8" (кодов) и "16" (кодов). Причем в одном случае недостает четырех кодов, а в другом — четыре кода лишние. Действительно, три разряда (8 кодов) явно не достаточно, а четыре разряда (16 кодов) предлагает несколько больше кодов, чем требуется.

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

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



Однако следует отметить, что пользователям,



Однако следует отметить, что пользователям, которые применяют готовые технологии (программные приложения, общепринятые форматы и режимы), такими расчетами заниматься не приходится, поскольку давно разработаны стандартные кодовые таблицы. Вместе с тем, их ограничения, как правило, вызывают неприятие у лиц, которые не знакомы с особенностями логики, лежащей в основе компьютерных технологий. Например, художнику может быть совершенно непонятно, почему в компьютерных технологиях принято 256 градаций тона, а, например, не 7 или 100.

Дополнительную информацию о форматах файлов см. в части III.

Значения кодовой таблицы



Значения кодовой таблицы

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

Мераб Мамардашвили

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

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

Нетривиальность вызывает множество вопросов. Какими принципами следует руководствоваться при заполнении правой части кодовой таблицы? Каким образом формируется совокупность значений и в каком порядке они распределяются?

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