Отец кивнул и продолжил:

– Какой самый простой способ кодирования можно создать, используя длительность включения сигнала?

Я предложил:

– Можно каждой букве дать номер от 1 до 33, а пробел пусть будет 34, и тогда можно передавать буквы по номерам, а сам номер кодировать длительностью сигнала в секундах.

Отец одновременно улыбнулся и укоризненно покачал головой:

– Ты прекрасно знаешь, что пробел в сообщениях встречается чаще всего, так что использовать для его кодирования число 34 просто неэкономно. Это во-первых. Во-вторых, а так ли уж нужен пробел?

Действительно, ведь при помощи шифромашины мы с Марком передавали сообщения без пробелов. Тем временем отец продолжил:

– Но проблема даже не в этом. Нужно будет очень точно отмерять секунды, а при длинной передаче внимание оператора наверняка собьётся, и декодировать сигнал будет трудно. Давайте придумаем что-то более компактное и удобное для распознавания. Екатерина, ты знакома с двоичной системой счисления?

– Нет.

– Хорошо. Тогда как ты думаешь, почему мы считаем до десяти, то есть почему используем для записи чисел десять цифр от 0 до 9?

– Наверное, потому, что у нас десять пальцев на руках.

– Ты права, есть такая гипотеза. Но если подумать, то число «10» ничем не лучше и не хуже других чисел. Просто мы привыкли, что у нас именно десять цифр. А что получится, если использовать только две цифры: 0 и 1?

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

0 = 0

1 = 1

2 =…

– Как получить 2? Нам надо к 1 прибавить ещё 1. Правила сложения очень простые:

0 + 0 = 0

0 + 1 = 1

1 + 1 = 10

– Почему это 10?

– Смотри. У нас есть только две цифры. Цифра 1 – последняя в ряду (как цифра 9), поэтому, если прибавить к ней единицу, произойдет перенос разряда, так же как если к девяти прибавить один. Но можно просто запомнить эти правила и не задумываться.

Отец блаженно улыбался, слушая моё объяснение. Похоже, этого он от меня и ожидал. Ободрённый, я спросил Катю:

– Теперь ты можешь сказать, как записать «3»?

Катя подумала и сказала, что «3» надо записывать как «11». Я подтвердил, что это абсолютно правильно, и сразу же спросил, как записывать «4». Но тут уже возникли сложности, и пришлось объяснять, как происходит перенос разряда и почему в итоге получается «100». После этого мы записали двоичные числа до 31 (так попросил папа).

Тем временем папа рассказал нам, как из двоичной записи числа перейти к десятичной. Оказалось, что каждому разряду соответствует степень двойки: 1 (2>0), 2 (2>1), 4 (2>2), 8 (2>3), 16 (2>4), 32 (2>5), 64 (2>6), 128 (2>7), 256 (2>8), 512 (2>9), 1024 (2>10) и т. д. Нужно взять те степени, которым в записи двоичного числа соответствуют единицы, а потом сложить их. Например, двоичному числу 10111 соответствует десятичное 16 + 4 + 2 + 1 = 23.

Затем папа сказал, что в математике числа «0» и «1» называются битами и что любую информацию можно представить при помощи битов. После этого мы наконец перешли к разработке системы кодирования.

Папа составил таблицу из трёх столбцов. В первый он выписал все буквы русского алфавита, пропустив букву Ё. Во втором записал их номера (от 0 до 31). А в третий столбец он записал те же номера в двоичном представлении, но каждый номер состоял из пяти битов – от 00000 до 11111. Получилось вот что:



– Теперь договоримся, как передавать биты 0 и 1. Тут можно использовать и метод Морзе. Пусть «0» будет коротким сигналом, а «1» – длинным, раза в три длиннее. При этом между каждым сигналом надо делать небольшую паузу, а между буквами, то есть между каждыми пятью сигналами – паузу подлиннее.