// Код Comma – саморазделяющиеся двоичные коды с автоматическим определением границ
Не требуются разделители между последовательными кодами.
Унарный префикс длины, за которым следуют биты данных.
Табу-вариант позволяет избегать определённых шаблонов битов при необходимости.
Код Comma кодирует целое число n так: 1) записывает длину в битах L-1 в унарном виде (L-1 единиц, за которыми следует ноль); 2) добавляет двоичное представление без ведущей единицы. Табу-вариант изменяет кодирование так, чтобы избегать шаблонов вроде 11, что полезно в некоторых каналах связи.
Basic Comma Code: 0 → 0 (special case) 1 → 01 (0 ones + 0 + empty) 2 → 100 (1 one + 0 + '0') 3 → 101 (1 one + 0 + '1') 4 → 11000 (2 ones + 0 + '00') 5 → 11001 (2 ones + 0 + '01') Concatenated: 1,2,3 → 01 100 101 → 01100101 Self-delimiting - can decode without separators Taboo variant avoids '11' pattern: Uses different encoding to prevent consecutive 1s
Код Comma — это саморазделяющийся двоичный код, который кодирует целые числа с помощью унарного префикса длины и последующих битов данных. Он называется «Comma», потому что коды можно конкатенировать без явных разделителей, как элементы списка.
Унарный префикс длины говорит декодеру, сколько битов данных следует дальше. Если вы видите k единиц, за которыми следует ноль, вы знаете, что нужно прочитать ровно k последующих битов. Это позволяет объединять несколько кодов без дополнительных разделителей.
Табу-вариант кода Comma изменяет схему кодирования, чтобы избегать определённых шаблонов битов (например, 11). Это полезно в каналах связи, где такие шаблоны вызывают проблемы или имеют специальное значение, например, для маркеров синхронизации.
Код Comma применяется в сжатии данных, сетевых протоколах и системах хранения, где важны саморазделяющиеся свойства. Он особенно полезен, когда нужно хранить множество целых чисел переменной длины без отдельных полей длины.