// 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 編碼常見於資料壓縮、網路通訊協定以及儲存系統等場景,在這些場景中,自分界與 prefix‑free 的特性非常重要,特別適合用來在同一條位元流中存放多個長度不一的整數。