// Comma 编码 —— 自动识别边界的自分界二进制代码
无需在连续代码之间插入额外分隔符。
一元长度前缀,后接实际数据比特。
taboo 变体可在需要时规避特定比特模式(如 11)。
Comma 编码将整数 n 编码为:1)将位长 L-1 以一元形式写出(L-1 个 1 后跟一个 0);2)追加去掉首位 1 的二进制表示。taboo 变体会调整编码以避免像 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 个 1 后跟一个 0 时,就知道接下来要读取恰好 k 个比特。这使得多个编码可以连续拼接而不依赖显式分隔符。
taboo Comma 编码通过改变编码方式来避免特定的比特模式(例如 11)。在某些通道中,特定模式可能表示控制符或同步标记,此时 taboo 变体就非常有用。
Comma 编码常用于数据压缩、网络协议以及存储系统等场景,在这些场景中“自分界、前缀无歧义”的特性非常重要,尤其适合在一个比特流中存放多个变长整数。