Как передать произвольное количество бит, передав 2 бита
Недавно прочитал статью на Пикабу про бесконечное сжатие, где предлагалось создать словарь 3-х байтовых блоков, и представлять информацию в виде ссылок на эти блоки. Понял что выигрыша в этом нет, но идея передавать не саму информацию, а что-то другое, меня зацепила. Начал размышлять, допустим демон на дне океана перекусывает нитку оптоволокна и смотрит, как туда сюда бегут 1 и 0. Какой в них смысл? Одно и тоже. И правда, как извлечь смысл из этого однообразия. А здесь вступают в игру фактор времени и договоренности. То есть добавляются дополнительные измерения, о которых демон не знает. Стартовые, стоповые биты, длина пакета.
Стал думать, хорошо, как можно использовать время, договоренность и идею передавать не саму информацию, а ссылку на нее. Как передать ссылку на информацию в словаре, не передавая ее. Допустим передать не сами 4 бита информации, а индекс строки этих 4-х битов в таблице всех возможных значений 4 бит.

Например передать биты 1010, не передавая их индекс 10 в таблице. Для этого мы можем использовать Время и Договориться. Пусть у передатчика и приемника (лазерные указки например) будут одинаковые тактовые генераторы. И соглашение о том, что приемник, получив импульс света, начинает считывать данные в таблице строка за строкой. А получив второй импульс, останавливается и записывает данные текущей строки как полученные. Соответственно передатчик, отправив первый импульс считает такты (в данном случае 11) и передает второй импульс, чтобы приемник остановил считывание в таблице.

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

Например если надо передать длинный пакет битов, то надо использовать гигагерцовый генератор и тоже избавить его от суеты. Например для пакета 111111010000000000, глупо заставлять приемник считывать сотни тысяч строк в таблице пока он не дойдет до нужной. Длительностью первого импульса можно включать генератор отсчета разрядов. То есть по входящему фронту импульса, приемник начинает считать номер разряда и заканчивает счет по спадающему фронту. Для числа указанного выше нужно чтобы приемник насчитал 6 импульсов для старших разрядов и начал считать с 111111000000000000.
Самая простая и наглядная реализация принципа использования общего генератора и договоренности. Это шеф себе и секретарше, сидящей в соседнем кабинете, ставит раскрашенные часы со стрелкой и стучит в гонг, когда секундная стрелка находится в секторе его желаний. Таким образом он может разрисовать на часах больше секторов с разными желаниями (по научному, передавать больше данных на бит), но тут уже все упирается в скорость реакции секретарши.
