> comma | self | delimit <
// カンマコード – 自動的に境界が分かる自己区切りバイナリコード
0 文字
0 文字
[SELF-DELIMIT]
自己区切り
連続したコードの間に区切り文字が不要です。
[SIMPLE]
シンプルな構造
ユニaryの長さプレフィックスに続いてデータビットを並べます。
[TABOO]
パターン回避
タブー変種により、必要に応じて特定のビットパターンを避けられます。
>> 技術情報
カンマコードの仕組み:
カンマコードは整数 n を次のようにエンコードします。1) ビット長 L-1 をユニary表現(L-1 個の 1 の後に 0)で書く。2) 先頭の 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
カンマコードを使う理由:
- ▸自己区切り特性
- ▸区切り文字や長さフィールドが不要
- ▸実装が簡単
- ▸特定パターンを避けるオプション
- ▸接頭辞付きの衝突しないコード
>> よくある質問
カンマコードとは何ですか?
カンマコードは、ビット長をユニaryで表したプレフィックスとその後のデータビットで整数を表現する自己区切りバイナリコードです。コードをカンマ区切りのリストのように、明示的な区切り記号なしで連結できることからこの名称が付いています。
自己区切りである理由は?
ユニaryの長さプレフィックスにより、デコーダは後続のデータビット数を正確に知ることができます。k 個の 1 のあとに 0 が現れたら、その直後にちょうど k ビットを読み取ればよいと分かります。これにより複数のコードを区切り文字なしで連結できます。
タブー変種とは何ですか?
タブーカンマコードは、特定のビットパターン(例: 11)を避けるようにエンコード方法を変更したものです。同期マーカーなど、特定のパターンが特別な意味を持つ通信チャネルで役立ちます。
カンマコードはどこで使われますか?
カンマコードは、データ圧縮、ネットワークプロトコル、ストレージシステムなど、自己区切り性が重要な場面で利用されます。可変長の整数を複数保存する際に、個別の長さフィールドなしで扱える点が特に有用です。