рейтинг блогов

Код Грея на пальцах

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

Код Грея на пальцах

Глубокой осенью 1980 года после долгих бумажных проволочек, связанных с переводом из ДВПИ в ЛЭТИ, я прибыл на свой первый семинар в новой альме матери. Дело шло к концу семестра, и преподаватель схемотехники сильно призадумался, сочиняя мне тему для курсовой. В конце концов он решил бросить меня в область новую, неизведанную — преобразователь кода Грея в двоичный код. Про код Грея я раньше ничего не слышал и сразу же бросился в библиотеку (тогда ещё не было интернета, прикиньте!). Тема оказалась довольно простой и настолько забавной, что до сих пор в разных интеллектуальных компаниях после первой бутылки коньяка я демонстрирую присутствующим глубокое проникновение в предмет.

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

Лет через десять я сам уже вёл семинары по цифровой электронике, и передо мной встала проблема, как просто и доходчиво объяснить студентам-заочникам сущность кода Грея. И я придумал такую байку.

Этнографическая байка про код Грея

Задумывались ли вы когда-нибудь, что считая на пальцах, мы используем ресурсы своего организма крайне нерационально? Задействуя пять пальцев, мы считаем до десяти, хотя различные сочетания загнутых и разогнутых пальцев одной руки дают 25 = 32 различных комбинации. Получается, что мы используем собственные вычислительные мощности всего лишь на треть.

Считать в двоичных кодах не выход, так как требуется довольно сложная координация движений разных пальцев. Например, при переходе от 15 к 16 (01111 → 10000) приходится одновременно разгибать четыре пальца и загибать пятый. Желательно же, чтобы при переходе к следующему числу, как и при счёте до 10, загибался или разгибался только один палец. Хочется также, чтобы существовал стереотип движений, то есть при счёте пальцы циклически повторяли одну и ту же последовательность сгибаний и разгибаний, что позволило бы довести счёт до автоматизма.

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



Понятно, что это сразу породило различные межнациональные недопонимания. На местном рынке на вопрос этнографа, сколько стоит ведро устриц, абориген изобразил фигуру, воспроизведённую на заглавной картинке. Этнограф понял это по-своему, и вытащил из сумки бутылку водки. Ещё большее недопонимание возникло, когда в ответ на аналогичный вопрос, абориген показал этнографу «фак».

Код Грея на пальцах Код Грея на пальцах

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

1. Старший разряд (то есть мизинец) кода Грея всегда совпадает со старшим разрядом двоичного кода.
2. Положение следующих по порядку пальцев определяется правилом: если предыдущий палец загнут, то следующий палец меняет своё положение. Если же предыдущий палец разогнут, положение следующего пальца не меняется.

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

Код Грея на пальцах Код Грея на пальцах Код Грея на пальцах

Для чего это нужно?

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

Код Грея на пальцах

Расположим вдоль радиуса диска несколько неподвижных фотодатчиков (в данном случае три, они обозначены красными кружками). Когда фотодатчик находится напротив белого сектора диска, он даёт сигнал 0, когда напротив чёрного — 1. Таким образом, в зависимости от угла поворота диска фотодатчики дают разные коды, что позволяет измерять угол поворота. В данном случае диск расчерчен так, чтобы фотодатчики давали трёхразрядный двоичный код. Например, 000 — север, 001 — северо-запад, 010 — запад и т.д. до 111 — северо-восток.

Код Грея на пальцах

Проблема такого кодового диска состоит вот в чём. Когда линейка фотодатчиков находится на границе между двумя секторами, датчики начинают вести себя непредсказуемым образом. Вот, например, ситуация, когда диск переходит из сектора 000 в сектор 111. Понятно, что невозможно сделать фотодатчики абсолютно идентичными, а границу между секторами абсолютно ровной. В результате при переходе границы одни датчики переключатся из 0 в 1 раньше, другие — позже. В результате возникают промежуточные комбинации кодов, например 000 -> 001 -> 101 -> 111, что может дать грубую ошибку при измерении угла.

Код Грея на пальцах

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

Код Грея на пальцах

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

Код Грея на пальцах

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

Оставить комментарий

Архив записей в блогах:
Театр на Юго-Западе сформировался как самостоятельный творческий коллектив в 1977 году. Режиссер и актер Валерий Белякович объединил два театральных любительских коллектива из рабочей и учащейся молодежи и создал с ними театр-студию. Тогда же энтузиасты получили постоянное ...
Вот тема, на которую, наверно, все уже сказали всё: почему мы сливаем конфликты на играх. Почему обрубаем живые ветки сюжетов ради эффективности в достижении игровых целей. Почему на острые вопросы даем ответ в том духе, что мы за все хорошее и против всего плохого. Моя ролевая жизнь стал ...
Берлускони вышел из гонки за пост президента Италии. За кем теперь следить на выборах? В Италии 24 января начинается голосование, в ходе которого будет избран новый президент республики. «Друг Путина» и, пожалуй, самый известный в России итальянский политик Сильвио Берлускони ...
Странный нонче итальянец пошел, совсем дикий. Подруга одного надыбала. Два года окучивала, заманила в Россию, наконец. Теперь возит, всем, как трофей показывает. Ну, то, что возит, оно понятно – на стенку над камином не приколотишь, квартира съемная и камина нет. Таки итальянецжмется, ...
 В сюжете "Россия 1" про упавший в Карелии самолет показывают мужчину-очевидца. Я не умею резать видео, поэтому смотреть с 48 секунды, где человек в красной куртке рассказывает о происходящем. Тронуло до глубины Этот случайный ...