Глава 9
За битом бит
Когда Тони Орландо (Tony Orlando) в 1973 г. просил в песне,
чтобы его возлюбленная повязала вокруг дуба желтую ленточ-
ку, он не нуждался ни в подробных объяснениях, ни в дли-
тельной дискуссии. Ему не нужны были «если», «кроме того»
и «тем не менее». В ситуации, о которой рассказывала песня,
непременно были бы замешаны сложные чувства, но на са-
мом деле ее герой хотел услышать лишь «да» или «нет». Он
хотел, чтобы желтая ленточка, обвязанная вокруг дерева, оз-
начала: «Да, ты долго валял дурака и три года просидел в тюрь-
ме, но я все равно хочу, чтобы ты вернулся и жил со мной под
одной крышей». А отсутствие ленточки значило бы : «Даже
носа своего не показывай».
Как видите, есть лишь две четкие взаимоисключающие воз-
можности. Тони не пел «Обвяжи дерево половиной ленточки,
если должна немного подумать» или «Обвяжи дерево синей лен-
точкой, если больше не любишь меня, но хочешь, чтобы мы
остались друзьями». Нет, он выразился очень и очень просто.
Не менее эффективными, чем отсутствие или наличие жел-
той ленточки, были бы дорожные знаки в воротах — «Въезд
разрешен» или «Въезд запрещен» (хотя спеть о них было бы
труднее).
Или плакатик на двери — «Закрыто» или «Открыто».
Или фонарик в окне — включенный или выключенный.
78
Глава девятая
Сказать «да» или «нет» можно множеством способов, если
это все, что вам нужно сказать. Для этого не нужны предложе-
ния или слова, не нужны даже буквы. Все, что требуется, —
это бит (bit), а под битом я понимаю 0 или 1.
Из прошлых глав мы узнали, что в десятичной системе, ко-
торую мы обычно используем для счета, нет ничего особен-
ного. Наша система счисления основана на десяти, потому что
именно столько у нас пальцев на руках, — это понятно. Мы с
тем же успехом могли положить в основу системы счисления
восемь (если бы были персонажами мультфильма), четыре (если
бы были раками) и даже два (если бы были дельфинами).
А вот у двоичной системы есть особенность: это простей-
шая возможная система счисления. Есть только две двоичные
цифры — 0 и 1. Если мы захотим упростить двоичную систе-
му, нам придется избавиться от единицы, и мы останемся с
нулем. А с одним нулем ничего толкового не сделаешь.
Слово бит (сокращение от binary digit — двоичная цифра),
— безусловно, одно из самых симпатичных слов, появивших-
ся в связи с компьютерами. Конечно, в английском языке у
него есть и обычное значение — «небольшая часть, степень
или количество» — и это значение вполне отвечает и компью-
терному смыслу бита, поскольку бит — одна двоичная цифра
— это и вправду очень мало.
Иногда новое слово появляется за счет получения нового
значения. Так и со словом «бит». Бит — это нечто большее,
чем просто двоичная цифра, используемая дельфинами для
расчетов. В компьютерный век бит обрел значение основного
структурного блока, из которого строится информация.
Это, конечно, очень самоуверенное заявление. Разумеется,
передавать информацию можно не только в форме битов, но
буквами, словами, азбукой Морзе, азбукой Брайля и десятич-
ными цифрами. Главное в бите то, что он содержит очень мало
информации. Один бит информации — это минимально воз-
можное ее количество. Все, что меньше бита, информации
вообще не содержит. С другой стороны, поскольку бит пред-
ставляет собой минимальный объем, более сложную инфор-
мацию можно передать в нескольких битах. Кстати, говоря о
малости содержащейся в бите информации, я вовсе не хочу
сказать, что она не важна. Вспомните: желтая ленточка была
очень важна для двух людей, которые о ней знали.
79
За битом бит
Информацию можно также рассматривать как выбор меж-
ду двумя или более возможностями. В устной речи, например,
вы выбираете слова из всего вашего словарного запаса. Оди-
ночный бит соответствует выбору из двух возможностей (на-
пример, «уйди прочь» или «вернись домой»), и две возможно-
сти есть, безусловно, минимальное осмысленное их количе-
ство. Несколько битов означают выбор из нескольких (боль-
ше двух) возможностей. «Послушайте, дети, вместе со мной,
О Пола Ревира скачке ночной», — писал Генри Уодсворт Лонг-
фелло, оставив нам, возможно, не совсем исторически точное
описание того, как Пол Ревир (Paul Revere) предупредил аме-
риканских колонистов о вторжении британцев. Эта история
— прекрасный пример того, как с помощью битов можно пе-
редать важную информацию:
Коль из города выйдут британцы сегодня
По суше иль морем, — он другу сказал, —
Повесишь фонарь на верху колокольни
Северной церкви, как особый сигнал,—
Один, если сушей, и два, если морем…
Говоря коротко, у друга Пола Ревира было два фонаря. Если
бы британцы двинулись в наступление по суше, он вывесил
бы на колокольне один фонарь, если бы наступление началось
морем, он вывесил бы оба.
Всех вариантов Лонгфелло явно не указывает. Он ничего
не сказал о третьей возможности — британцы вовсе не будут
наступать. Лонгфелло предполагает, что этому варианту бу-
дет соответствовать отсутствие фонарей на колокольне.
Допустим для простоты, что два фонаря висят на арке ко-
локольни всегда. Обычно они потушены.
80
Глава девятая
Это означает, что наступление британцев еще не началось.
Если горит один фонарь,
или
британцы наступают сушей. Если горят оба фонаря,
британцы наступают морем.
Каждый фонарь — это бит. Зажженный фонарь соответ-
ствует 1, потушенный — 0. Тони Орландо доказал нам, что
для выбора одной из двух возможностей нужен всего один бит.
Если бы Полу Ревиру достаточно было знать лишь о самом
факте наступления британцев (но не о его направлении), его
другу хватило бы и одного фонаря. Фонарь горит — наступ-
ление началось. Фонарь потушен — судьба дарит вам еще один
спокойный вечер.
Выбор одной из трех возможностей требует дополнитель-
ного светильника. Однако после его добавления становится
возможным передать уже один из четырех вариантов:
81
За битом бит
00 = Британцы не наступают
01 = Наступление началось на суше
10 = Наступление началось на суше
11 = Наступление началось морем
Ограничившись всего тремя вариантами сообщения, Пол
Ревир вообще поступил весьма предусмотрительно. На языке
теории коммуникаций это называется избыточной надежнос-
тью (redundancy), необходимой для противодействия шуму
(noise). Шумом в теории коммуникаций называется все, что
мешает связи. Характерный пример — шуршание в телефон-
ной трубке. И все же, несмотря на шум, общение по телефону,
как правило, оказывается успешным, поскольку устная речь в
высокой степени избыточна. Нам не нужно слышать каждый
слог в каждом слове, чтобы понять, о чем идет разговор.
Говоря о фонарях на колокольне, шумом можно называть
ночную тьму или расстояние от Пола Ревира до церкви, т. е.
факторы, которые могли помешать ему отличить один фонарь
от другого. В стихотворении Лонгфелло есть важный фрагмент:
И вот он увидел далекий сигнал —
Мерцанье, а после огонь замигал!
Мгновенье проходит, и он в седле,
Но медлит и видит, как в темной мгле
Второй фонарь вдали замерцал!
Судя по всему, Пол Ревир вряд ли мог узнать, какой имен-
но из двух фонарей был зажжен первым.
Здесь важно понять, что информация построена на выборе
из двух или более возможностей. Как уже говорилось, в устной
речи мы используем слова из словаря. Можно было бы прону-
меровать все слова в словаре от 1 до, скажем, 351 482, а затем
продолжать разговор, используя номера вместо слов (конеч-
но, обоим участникам разговора понадобятся словари с оди-
наковой нумерацией и безграничное терпение).
Верно также и то, что любую информацию, которую можно
свести к выбору из двух или более возможностей, можно пред-
ставить набором битов. Нет нужды напоминать, что спосо-
бов общения, не ограниченных выбором из дискретного на-
бора возможностей и жизненно важных для существования
рода человеческого, масса. Вот почему у людей не бывает ро-
82
Глава девятая
мантических отношений с компьютерами (надеюсь!). Если вы
не можете облечь нечто в слова, изображения или звуки, вы не
сможете закодировать эту информацию в виде битов. Да, ве-
роятно, и не захотите.
Большой палец, развернутый вверх или вниз в конце боя
гладиаторов, представляет собой один бит информации, два
больших пальца, повернутых вверх или вниз, — два бита. Та-
кую систему использовали для оценки новых фильмов кино-
критики Роджер Эберт (Roger Ebert) и покойный Джин Сискел
(Gene Siskel). Всего в их системе было четыре варианта, пред-
ставленных следующими парами битов (подробно мнение Эбер-
та и Сискела нас сейчас не интересует; только их оценки):
00 = Обоим не понравилось
01 = Сискелу не понравилось; Эберту понравилось
10 = Сискелу понравилось; Эберту не понравилось
11 = Обоим понравилось
Первый бит относится к Сискелу, причем 0 означает, что
фильм ему не понравился, а 1 — что понравился. Точно так
же второй бит относится к Эберту.
Теперь, если друг спросит вас: «Что думали Сискел и Эберт
о фильме Impolite Encounter?» — вы, вместо того чтобы отве-
тить «С точки зрения Сискела, большой палец вверх, с точки
зрения Эберта большой палец вниз» или даже «Сискелу по-
нравилось; Эберту нет», можете просто сказать: «Один ноль».
Если ваш друг знает, какой бит относится к Сискелу, а какой
— к Эберту, и понимает, что бит 1 означает «за», а бит 0 —
«против», ваш ответ будет ему совершенно понятен. Но сна-
чала вам и вашему другу нужно будет изучить этот шифр.
С тем же успехом мы могли бы приписать биту 1 значение
«палец вниз», а биту 0 — «палец вверх». Кому-то это покажет-
ся противоестественным. Конечно, мы ожидаем, что бит 1 оз-
начает что-то утвердительное, а бит 0 — наоборот, но в реаль-
ности присвоение значений происходит вполне произвольно.
Единственное требование — все люди, использующие шифр,
должны знать, что означают биты 0 и 1.
Значение конкретного бита или группы битов всегда по-
стигается в контексте. Значение желтой ленточки на стволе
дуба, вероятно, ясно лишь человеку, который ее там повязал,
и тому, кому она предназначается. Измените цвет, дерево или
83
За битом бит
день, и ленточка превратится в бессмысленный обрывок тка-
ни. Точно так же, чтобы извлечь полезную информацию из
жестов Сискела и Эберта, нужно по меньшей мере знать, о ка-
ком фильме идет речь.
Если вы ведете список фильмов, отрецензированных Сис-
келом и Эбертом, с их оценками, вы можете добавить в него
еще один бит для учета собственного мнения. После его до-
бавления число возможных вариантов вырастет до восьми.
000 = Сискелу не понравилось; Эберту не понравилось;
мне не понравилось
001 = Сискелу не понравилось; Эберту не понравилось;
мне понравилось
010 = Сискелу не понравилось; Эберту понравилось;
мне не понравилось
011 = Сискелу не понравилось; Эберту понравилось;
мне понравилось
100 = Сискелу понравилось; Эберту не понравилось;
мне не понравилось
101 = Сискелу понравилось; Эберту не понравилось;
мне понравилось
110 = Сискелу понравилось; Эберту понравилось; мне
не понравилось
111 = Сискелу понравилось; Эберту понравилось; мне
понравилось
Благодаря тому, что для представления информации ис-
пользуются биты, мы можем быть уверены, что рассмотрели
все возможности. Мы знаем, что вариантов может быть толь-
ко 8, не больше и не меньше. Три бита позволяют посчитать
от 0 до 7. Других трехзначных двоичных чисел нет.
Теперь, познакомившись с описанием битов Сискела и
Эберта, вы вправе задать очень серьезный и непростой воп-
рос: а как быть со справочником по кино- и видеофильмам
Леонарда Мэлтина (Leonard Maltin)? Ведь Леонард Мэлтин не
оперирует большими пальцами. Он расставляет фильмам
оценки, используя более традиционную систему звездочек.
Чтобы определить, сколько битов нам понадобится для ко-
дирования системы Мэлтина, рассмотрим его систему подроб-
нее. Мэлтин присваивает фильму от 1 до 4 звезд с точностью
до половинки звезды (точнее, одну звезду он не присваивает;
84
Глава девятая
настолько плохому фильму присваивается титул «бомба»). Все-
го в системе 7 оценок, а это означает, что для их представле-
ния мы можем ограничиться тремя битами.
000 = Бомба
001 =
« 1/2
010 =
««
011 =
«« 1/2
100 =
«««
101 =
««« 1/2
110 =
««««
«А что насчет кода 111?» — спросите вы. Что ж, этот код не
значит ничего. Он не определен. Если для представления оцен-
ки Мэлтина использован код 111, вы сразу знаете, что произош-
ла ошибка (виновен в ней, вероятно, компьютер, так как люди
не ошибаются никогда).
Вспомните: в паре битов, использовавшихся для представ-
ления оценок Сискела и Эберта, левый бит был битом Сиске-
ла, а правый — Эберта. Значат ли что-нибудь отдельные биты
в новой системе? Как сказать… Если вы прибавите 2 к числен-
ному значению битового кода, а потом разделите полученное
число на 2, то получите число звездочек. Но это возможно
лишь потому, что мы использовали логичную и согласован-
ную систему кодирования оценок. Но мы могли определить
коды и иначе:
000 =
«««
001 =
« 1/2
010 =
«« 1/2
011 =
««««
101 =
««« 1/2
110 =
««
111 = Бомба
Этот шифр имеет столько же прав на существование, сколь-
ко и предыдущий, лишь бы все знали, что он означает.
Если бы Мэлтину однажды попался фильм, недостойный
даже единственной звезды, он мог бы получить вполовину
меньше. И для этой оценки у критика нашелся бы свободный
код. Таблица кодов могла бы выглядеть, например, так:
85
За битом бит
000 = Большая бомба
001 = Бомба
010 =
« 1/2
011 =
««
100 =
««1/2
101 =
«««
110 =
««« 1/2
111 =
««««
А вот для включения в рейтинг фильма, который не стоит
и половины звезды (0 звезд или «атомная бомба»?), пришлось
бы добавлять в систему дополнительный бит. Свободных трех-
битовых кодов более не осталось.
Журнал Entertainment Weekly расставляет оценки не только
фильмам, но и телепрограммам, музыкальным и компьютер-
ным компакт-дискам, книгам, Web-узлам и пр. Оценки варь-
ируются от A+ до F. Пересчитав их, вы обнаружите 13 воз-
можных вариантов. Для их представления понадобится 4 бита.
0000 = F
0001 = D–
0010 = D
0011 = D+
0100 = C–
0101 = C
0110 = C+
0111 = B–
1000 = B
1001 = B+
1010 = A–
1011 = A
1100 = A+
Три кода (1101, 1110 и 1111) остались неиспользованными,
полное же их число равно 16.
Говоря о битах, мы часто имеем в виду определенное их
количество. Чем больше битов мы используем, тем больше
число доступных нам вариантов.
Конечно, с десятичными числами дела обстоят точно так
же. Например, каково число доступных региональных теле-
фонных кодов? Код региона строится из трех десятичных цифр,
поэтому всего может быть 10
3
, или 1000 кодов, от 000 до 999.
86
Глава девятая
Сколько семизначных телефонных номеров доступно в реги-
оне с кодом 212? 10
7
, или 10000000. Сколько наберется телефо-
нов в регионе с кодом 212, начинающихся с цифр 260? Их бу-
дет 10
4
, или 10000.
Так и в двоичной системе число возможных кодов опреде-
ляется как 2 в степени, равной числу битов.
Число битов
Число кодов
1
2
1
= 2
2
2
2
= 4
3
2
3
= 8
4
2
4
= 16
5
2
5
= 32
6
2
6
= 64
7
2
7
= 128
8
2
8
= 256
9
2
9
= 512
10
2
10
= 1024
Каждый дополнительный бит удваивает число доступных
кодов.
Как посчитать нужное число битов для заданного количе-
ства кодов? Иначе говоря, как совершить обратный переход в
приведенной таблице?
Метод, который можно для этого использовать, заключа-
ется в использовании логарифма по основанию 2. Логарифми-
рование обратно возведению в степень. Допустим, мы знаем,
что 2
7
= 128. Значит, логарифм числа 128 по основанию 2 ра-
вен 7. На языке математики это записывается так:
log
2
128 = 7.
Итак, логарифм по основанию 2 числа 128 равен 7, а лога-
рифм по основанию 2 числа 256 — 8. Чему тогда равен лога-
рифм по основанию 2 числа 200? Если быть точными, то 7,64,
но на самом деле такая точность нас не интересует. Для пред-
ставления 200 различных вариантов с помощью битов нам их
понадобится 8.
87
За битом бит
Как правило, биты скрыты от поверхностного взгляда в глу-
бинах электронных устройств. Вы не увидите их на компакт-
диске, в электронных часах или внутри компьютера. Но иног-
да биты различимы вполне отчетливо.
Приведу один пример. Если у вас есть обычный фотоаппа-
рат с 35-миллиметровой пленкой, возьмите кассету и повер-
ните ее, как показано на рисунке.
1 2 3 4 5 6
7 8 9 10 11 12
Перед вами предстанет набор серебристых и черных квад-
ратов, отдаленно напоминающий шахматную доску. На ри-
сунке я пронумеровал их от 1 до 12. Этот набор называется
DX-кодировкой. Ее 12 квадратов в действительности представ-
ляют 12 битов. Серебристый квадрат соответствует 1, а чер-
ный квадрат — 0. Квадраты 1 и 7 всегда серебристые (1).
Что значат эти биты? Вы, возможно, знаете, что пленки раз-
личаются по светочувствительности. Ее иногда называют ско-
ростью (speed) пленки. Пленка высокой чувствительности счи-
тается быстрой (fast), поскольку на ней можно производить
съемку с очень короткими экспозициями. Скорость пленки из-
меряется в единицах ASA (American Standards Association, Аме-
риканская ассоциация по стандартам), причем наиболее по-
пулярны пленки с чувствительностью 100, 200 и 400. Чувстви-
тельность в единицах ASA не только напечатана на упаковке,
но и закодирована на кассете.
88
Глава девятая
Существует 24 стандартных чувствительности для фото-
пленок. Вот они:
25
32
40
50
64
80
100
125
160
200
250
320
400
500
640
800
1000
1250
1600
2000
2500
3200
4000
5000
Сколько битов нужно, чтобы закодировать чувствитель-
ность пленки? Ответ прост — 5. Мы знаем, что 2
4
= 16 — этого
слишком мало. А вот 2
5
= 32 — больше, чем достаточно.
Соответствие между квадратами на кассете и чувствитель-
ностью пленки показано в таблице.
Квад-
Квад-
Квад-
Квад-
Квад- Чувствительность
рат 2
рат 3
рат 4
рат 5
рат 6
0
0
0
1
0
25
0
0
0
0
1
32
0
0
0
1
1
40
1
0
0
1
0
50
1
0
0
0
1
64
1
0
0
1
1
80
0
1
0
1
0
100
0
1
0
0
1
125
0
1
0
1
1
160
1
1
0
1
0
200
1
1
0
0
1
250
1
1
0
1
1
320
0
0
1
1
0
400
0
0
1
0
1
500
0
0
1
1
1
640
1
0
1
1
0
800
1
0
1
0
1
1000
1
0
1
1
1
1250
89
За битом бит
0
1
1
1
0
1600
0
1
1
0
1
2000
0
1
1
1
1
2500
1
1
1
1
0
3200
1
1
1
0
1
4000
1
1
1
1
1
5000
Эти коды используются в большинстве современных 35-
миллиметровых фотоаппаратов. Если на вашем фотоаппарате
выдержка или тип пленки устанавливаются вручную, эти коды
в нем не применяются. Если же коды используются в вашем
аппарате, присмотритесь к нему в следующий раз, когда будете
вставлять пленку. Вы увидите шесть металлических контактов,
соответствующих квадратам с 1 по 6 на кассете. Серебристые
квадраты — это просто открытая металлическая поверхность
кассеты, которая является проводником. Черные квадраты по-
крыты краской — она электрического тока не проводит.
Электрическая схема фотоаппарата построена так, что ток
подводится к первому квадрату на кассете (он всегда серебри-
стый). Этот ток будет (или не будет) проведен пятью контак-
тами на квадратах со 2 по 6, в зависимости от того, окрашены
они изолирующей краской или нет. Так, если ток присутству-
ет на контактах 4 и 5, но отсутствует на контактах 2, 3 и 6, в
фотоаппарат вставлена пленка 400 ASA. При съемке выдержка
будет установлена автоматически.
В недорогих фотоаппаратах считываются только квадраты
2 и 3, а чувствительность пленки считается равной 50, 100, 200
или 400 единицам ASA.
Квадраты с 8 по 12 в большинстве аппаратов также не ис-
пользуются. В квадратах 8, 9 и 10 зашифровано число кадров
на пленке, а квадраты 11 и 12 содержат сведения о том, черно-
белая пленка или цветная и позитивная или негативная.
Вероятно, чаще всего вы сталкиваетесь с двоичными чис-
лами в коде UPC (Universal Product Code, универсальный код
продукта), или просто штрих-коде, — наборе черных штри-
хов, который в наши дни присутствует практически на любой
упаковке. Штрих-код — это лучший символ того, насколько
компьютеры внедрились в нашу жизнь.
(продолжение)
90
Глава девятая
Хотя у некоторых людей штрих-код вызывает приступы
паранойи, это совершенно безобидная вещь, изобретенная для
автоматизации розничной торговли и учета товаров. Со своей
задачей он справляется вполне успешно. Благодаря ему, на-
пример, современные кассовые аппараты выдают покупателю
чек, в котором подробно расписаны все его покупки, чего без
штрих-кода сделать было бы нельзя.
Нас же в первую очередь интересует то, что код UPC являет-
ся двоичным, хотя на первый взгляд этого и не скажешь. Давай-
те разберемся, как строится штрих-код и как он работает.
Чаще всего встречается штрих-код, состоящий из несколь-
ких цифр и 30 вертикальных полосок различной толщины, раз-
деленных пустыми интервалами также переменной толщины.
Рассмотрим в качестве примера штрих-код, нанесенный на
банку с «Супом куриным с вермишелью» фирмы Campbell
Soup.
0
7
0 0 0
0 1 2 5 1
1
5
Возникает искушение разделить код UPC на тонкие и тол-
стые полоски, узкие и широкие промежутки, и это действи-
тельно один из способов разобраться в его структуре. Черные
полоски и пустые промежутки штрих-кода бывают четырех
различных ширин.
Но нам удобнее рассматривать UPC как набор битов. Имей-
те в виду, что сканирующему устройству у кассира нет нужды
просматривать штрих-код целиком, и уж тем более неспособ-
но оно интерпретировать цифры в его основании, поскольку
это потребовало бы применения сложной компьютерной тех-
нологии распознавания символов (optical character recognition,
OCR). Сканеру достаточно увидеть тонкий срез штрих-кода.
Код UPC делают таким большим просто для того, чтобы кас-
сиру легче было «нацелить» на него сканер. Срез, попадающий
в сканер, выглядит так.
91
За битом бит
Похоже на азбуку Морзе, правда?
Сканируя эту информацию слева направо, компьютер при-
сваивает бит 1 первой встреченной черной полоске, и бит 0
первому промежутку. Следующие промежутки и штрихи счи-
тываются как последовательности одного, двух, трех или че-
тырех битов в зависимости от ширины штриха или проме-
жутка. В битовом представлении данный штрих-код выгля-
дит так:
10100011010110001001100100011010001101000110101010111001011001101101100100111011001101000100101
Итак, штрих-код представляет собой набор 95 битов. В дан-
ном примере эти биты можно разбить на следующие группы.
Биты Значение
101
Левый контрольный узор
0001101
0110001
0011001
0001101
0001101
0001101
01010
Центральный контрольный узор
1110010
1100110
1101100
1001110
1100110
1000100
101
Правый контрольный узор
Цифры с левой стороны
Цифры с правой стороны
Первые три бита — всегда 101. Они называются левым кон-
трольным узором (left-hand guard pattern) и нужны для того,
чтобы настроить сканирующее устройство. По контрольному
узору сканер определяет ширину штриха и промежутка, соот-
ветствующую одному биту. Иначе на всех упаковках код UPC
пришлось бы делать одного и того же размера.
За левым контрольным узором следует шесть групп по 7
битов в каждой. В них закодированы десятичные цифры от 0
до 9, в чем мы убедимся чуть позже. Затем идет 5-битовый цен-
тральный контрольный узор — фиксированная группа битов
(всегда 01010), используемая как встроенная защита от оши-
92
Глава девятая
бок. Не найдя центрального контрольного узора там, где он
должен быть, сканер считает штрих-код неверным. Это один
из нескольких способов выявить плохо напечатанный или под-
деланный штрих-код.
За центральным контрольным узором идут еще шесть 7-
битовых групп и правый контрольный узор (всегда 101). Поз-
же я объясню, как контрольные узоры позволяют сканировать
штрих-код как слева направо, так и справа налево.
Всего в коде UPC зашифровано 12 десятичных цифр. Шесть
из них закодированы с его левой стороны, по 7 битов в каждой.
Для их расшифровки можете использовать такую таблицу.
Левосторонние коды
0001101 = 0
0110001 = 5
0011001 = 1
0101111 = 6
0010011 = 2
0111011 = 7
0111101 = 3
0110111 = 8
0100011 = 4
0001011 = 9
Заметьте: каждый 7-битовый код начинается с 0 и кончает-
ся 1. Натолкнувшись на 7-битовый код, который начинается с
1, а кончается 0, сканер понимает, что код UPC либо неверно
прочитан, либо подделан. Кроме того, в каждом коде группы
единиц встречаются лишь дважды. Это значит, что каждая де-
сятичная цифра в коде UPC зашифрована двумя вертикаль-
ными штрихами.
Еще одна особенность кодов в этой таблице — нечетное
число 1 в каждом из них. Она также позволяет проверить пра-
вильность штрих-кода — это так называемый контроль чет-
ности (parity).
Для интерпретации шести 7-битовых кодов в правой час-
ти UPC используйте следующую таблицу.
Правосторонние коды
1110010 = 0
1001110 = 5
1100110 = 1
1010000 = 6
1101100 = 2
1000100 = 7
1000010 = 3
1001000 = 8
1011100 = 4
1110100 = 9
93
За битом бит
Эти коды являются дополнительными по отношению к
предыдущим: там, где в левосторонних кодах был 0, теперь
стоит 1, и наоборот. Правосторонние коды всегда начинаются
с 1 и заканчиваются 0. Кроме того, число битов 1 в них всегда
четно, что можно применять для контроля четности.
Теперь мы окончательно готовы к расшифровке UPC. С по-
мощью двух приведенных выше таблиц мы можем определить
12 цифр, зашифрованных на банке куриного супа с вермише-
лью фирмы Campbell Soup емкостью 10 3/4 унции. Вот они:
0 51000 01251 7
Какое разочарование! Да ведь это те самые цифры, кото-
рые и без того напечатаны под штрих-кодом! Да, и это очень
удобно: если сканер по каким-то причинам не смог прочитать
код, кассир может ввести его вручную. Вы наверняка неоднок-
ратно видели, как это происходит. Конечно, получается, что
весь наш труд по расшифровке штрих-кода был напрасным, к
тому же никакой секретной информации мы так и не получи-
ли: просто 30 вертикальных штрихов превратились в 12 цифр.
Первая цифра (в данном случае 0) символизирует тип кода.
0 означает, что код является обычным кодом UPC. Если код
нанесен на упаковку с товаром переменного веса, например,
мясом или овощами, он начинается с 2. Купоны на скидки обо-
значаются цифрой 5.
Следующие 5 цифр — это код производителя. В нашем
примере код 51000 соответствует компании Campbell Soup. Его
несут на себе все продукты с маркой Campbell. За ними следу-
ет пятизначный (01251) код конкретного продукта данной ком-
пании, в данном случае код банки с куриным супом емкостью
10 3/4 унции. Код продукта имеет смысл лишь в сочетании с
кодом производителя. У куриного супа с вермишелью, произ-
веденного другой компанией, будет другой код продукта, в
свою очередь код 01251 может значить нечто совершенно иное
у другого производителя.
Вопреки распространенному мнению в код UPC не вклю-
чается цена продукта. Информация о ней извлекается из ком-
пьютерной базы данных, которую магазин использует в соче-
тании со сканерами у кассовых аппаратов.
Последняя цифра (в нашем случае 7) называется символом
проверки остатка (modulo check character) и тоже использует-
94
Глава девятая
ся для исключения ошибок. Чтобы проверить его в деле, при-
своим каждой из первых 11 цифр (0 51000 01251 в нашем при-
мере) букву:
A BCDEF GHIJK
Теперь вычислим следующее выражение:
3
´ (A + C + E + G + I + K) + (B + D + F + H + J)
и вычтем результат из ближайшего большего числа, кратного
десяти. Полученное число и будет символом проверки остат-
ка. Для куриного супа с вермишелью Campbell:
3
´ (0 + 1 + 0 + 0 + 2 + 1) + (5 + 0 + 0 + 1 + 5) =
= 3
´ 4 + 11 = 23
Ближайшее большее число, кратное десяти, — 30. Далее:
30 – 23 = 7
Это число напечатано под штрих-кодом и зашифровано в
нем. Используется проверка остатка для вящей надежности.
Если остаток, вычисленный по штрих-коду, не совпадет с ос-
татком, явно указанным в нем, штрих-код не будет считаться
прочитанным.
Вообще для представления десятичной цифры от 0 до 9 до-
статочно 4 битов. С другой стороны, в UPC их используется 7.
Всего в штрих-коде 11 осмысленных десятичных цифр зако-
дировано 95 битами. А если учесть, что UPC с обеих сторон
выделен пустым пространством, эквивалентным 9 нулевым
битам, получается, что во всем штрих-коде 11 цифр закодиро-
вано 113 битами, по 10 бит на цифру!
Как мы уже видели, избыток битов частично применяется
для надежности считывания. От кода продукта было бы мало
толку, если бы его можно было в два счета исправить обыч-
ным фломастером.
Кроме того, благодаря им UPC можно считывать в обоих
направлениях. Если в первых считанных цифрах количество
единиц четно, сканер распознает, что код читается справа на-
лево. Для расшифровки правосторонних цифр компьютер
использует следующую таблицу.
95
За битом бит
Правосторонние коды в обратном порядке
0100111 = 0
0111001 = 5
0110011 = 1
0000101 = 6
0011011 = 2
0010001 = 7
0100001 = 3
0001001 = 8
0011101 = 4
0010111 = 9
Для расшифровки левосторонних цифр используется сле-
дующая таблица.
Левосторонние коды в обратном порядке
1011000 = 0
1000110 = 5
1001100 = 1
1111010 = 6
1100100 = 2
1101110 = 7
1011110 = 3
1110110 = 8
1100010 = 4
1101000 = 9
Эти 7-битовые коды отличаются от кодов, считываемых
слева направо. Никакой путаницы не возникает.
Знакомство с кодами в этой книге началось с азбуки Мор-
зе, составленной из точек, тире и промежутков между ними.
Азбука Морзе, на первый взгляд, имеет мало общего с нулями
и единицами, тем не менее, на деле это почти одно и то же.
Вспомните правила азбуки Морзе. Тире втрое длиннее точ-
ки. Точки и тире в пределах одной буквы разделены паузами
продолжительностью в одну точку. Промежутки между бук-
вами по длительности равны одному тире. Слова разделяются
паузами в два тире.
Чтобы немного упростить анализ, допустим, что длина тире
превышает длину точки не в 3, а в 2 раза. Это означает, что
точка соответствует одному единичному биту, а тире — двум
единичным битам. Паузы составляются из нулевых битов.
Вот как выглядит таблица с расшифровкой азбуки Морзе
для латинских букв:
96
Глава девятая
A
B
C
D
E
F
G
H
I
S
T
U
V
W
X
Y
Z
J
K
L
M
N
O
P
Q
R
А вот та же таблица, преобразованная в биты.
A
101100
B
1101010100
C
11010110100
D
11010100
E
100
F
1010110100
G
110110100
H
101010100
I
10100
O
1101101100
P
10110110100
Q
110110101100
R
10110100
J
101101101100
K
110101100
L
1011010100
M
1101100
N
110100
S
1010100
T
1100
U
10101100
V
1010101100
W
101101100
X
11010101100
Y
110101101100
Z
11011010100
Заметьте: все коды начинаются с 1 и кончаются парой 0,
представляющей паузу между буквами в пределах одного сло-
ва. Кодом пробела между словами является дополнительная
пара 0. Таким образом, на азбуке Морзе фраза «hi there» выг-
лядит так:
но, представив ее в битах, мы получим нечто, очень похожее
на срез штрих-кода:
97
За битом бит
101010100101000011001010101001001011010010000
С точки зрения битов азбука Брайля гораздо проще азбуки
Морзе. Шрифт Брайля является 6-битовым кодом. Каждый
символ представляется набором из шести точек, каждая из
которых может быть выпуклой или плоской. Как я объяснял в
главе 3, точки обычно нумеруются с 1 до 6.
1
2
3
4
5
6
Слово «code», например, представляется такими символа-
ми азбуки Брайля:
Если заменить выпуклую точку на 1, а плоскую — на 0,
любой символ азбуки Брайля можно представить 6-битовым
двоичным числом. Четыре символа Брайля для букв из слова
«code» будут выглядеть так:
100100 101010 100110 100010
где самый левый бит соответствует первой позиции в наборе,
а самый правый — шестой позиции.
Позже мы узнаем, что с помощью битов можно зашифро-
вать не только коды товаров, чувствительность пленки, худо-
жественную ценность фильма, способ наступления британской
армии или послание любимой женщины, но и любые слова,
изображения, звуки, музыку и кино. Но в основе своей биты —
это числа. Для представления информации в форме битов дос-
таточно пересчитать количество доступных возможностей. Это
количество определяет, сколько битов понадобится для того,
чтобы присвоить каждой возможности уникальный номер.
Биты также играют важную роль в логике — странном спла-
ве философии и математики, главная цель которого заключа-
ется в определении истинности или ложности некоего утвер-
ждения. Истину и ложь также можно обозначить через 1 и 0.
|