コンマ符号は、符号語の末尾に特定の記号または記号のシーケンスであるコンマが出現し、それ以外の場所には決して出現しない、接頭辞のない符号の一種です。 [ 1 ]これは配列を表現する直感的な方法です。
例えば、フィボナッチコーディングはコンマコードであり、コンマは. です11。 11と1011は有効なフィボナッチコードワードですが、101、0111、 は有効11011ではありません。
0。これにより、NULL 値が許可されます (コードとカンマが 1 の場合0、値は NULL または 0 として扱われます)。11。コンマが 11 ということは、データを表すために使用されている 2 つのコードが 0、10 であることを意味します。これは、任意のビット列または数値を表すときに、正確なビット 0、1 に変換できます。この方法を使用して任意のビット列または数値を表す場合は、0 には '0'、1 には '10'、コンマ/区切り文字には '11' を書き、NULL の場合は区切り文字/コンマを繰り返します。これにより、フィボナッチ コードのように見えるが、フィボナッチ数列で表される数値ではなくビット列に直接変換される、フィボナッチ に似たコードが構築されます。標準のフィボナッチ コーディングでは、すべての整数をフィボナッチ コードとして表現し、整数→コード→整数のエンコードとデコードのマッピングにはフィボナッチ分析が必要です。フィボナッチ数列に似たコードでは、ビット列またはビットごとの数値を0と10の連続として書き出し、文字列/数値の最後に「11」を付けます。これにより、配列を表現することができます。フィボナッチコードは、データ部分とカンマの前の部分(11ではなく、データ内の1のカウント)に分解できます。これは、後続の数字に1のカウントを書き込むだけの、穴あきエリアスコードです。または、データ内の1ごとに10を、データ文字列の最後の1に11を書き込むことで、穴あきエリアスコードからフィボナッチコードを構築することもできます。データがランダムなビット列の場合は、ビット列の0には0を、ビット列の1には10を書き、カンマ/区切り文字として11を書き込むだけで済みます。これにより、単に11であるNULL値が可能になります。
この方法では、データ中に0と1が同数含まれていると仮定して、長さnのビット列または数値を1.5n+2ビットで表現することができます。
この方法では、データ中に0と1が同数含まれていると仮定した場合、ヌルでないビット列を1.5n+1.5ビットで表現することができます。
1符号全体に a を先頭に追加し、単一の0符号とコンマを使用することで、コンマ符号に変換できます。単語の定義は、コンマ(スペース文字に相当)で終わる一連の記号である。[ 2 ]
すべてのスクランブルされたデータまたは適切にキュレーションされた同じ長さのデータは、いわゆる暗黙の確率を示します(有効なコードであれば、その発生確率は)
「汎用データ」と呼ばれるようなデータは、任意のインターリーブ単項コードをヘッダーとして使用して解析できます。この場合、追加の全単射ビット(読み取った単項コードの長さに等しい)がデータとして読み取られ、単項コードはデータの導入部またはヘッダーとして機能します。このヘッダーはコンマとして機能します。データは、ヘッダーの各ビット間でインターリーブ方式で読み取ることも、Chen-Hoエンコーディングのように、単項ヘッダーコード全体が読み取られた後にのみデータが読み取られる後読み取り方式で読み取ることもできます。
ランダムウォーク法や統計的総和法を用いると、すべての汎用データは平均2ビットのヘッダーまたはコンマと、さらに2ビット(最小1ビット)のデータを持つことがわかる。
これにより、3進数や5進数などの非バイナリ通信チャネルにおいて、送信前に安価な基数増加アルゴリズムを実行することも可能になります。
ここで「?」は、それ以上の処理を必要としない全単射の数字の値に対して「1」または「2」を表します。
もちろん、各データフィールドを区切るために単一のコンマを使用するため、すべてのデータが50%のコンマで構成されていることがわかります。高基本通信の文字あたりのコストは、ほぼ対数値を維持する必要があります。データには2ビット未満を使用し、コスト効率を維持するためにカンマ文字には2ビット未満を使用します。
この方法では、すべてのコンマの後に「1」または「2」が必ず付加されることが保証されており、この特性は伝送におけるタイミングの問題を考慮した設計を行う際に役立ちます。
既知のバイナリ値(下線部の最後の値は厳密には3進数への変換を必要としません)を3進数(ここではコンマを数字「3」とみなします)に変換するのは、3進数のビットコストがバイナリのビットコストと同程度に削減されない限り、ややコストがかかる場合があります。そのため、コストが一致する場合(これには、有用なデータの2ビットの「末尾」/後続部分、またはバイナリチャネルのパディングとして約2ビットであることがわかっている単項コード全体(これは即座に復号可能なコードではないため、最初の変更の最初のビットの後から読み取ります。即座に復号可能な単項コードを使用する場合は、単に読み取ります)の追加の「末尾」/後続部分を読み取る必要がある場合があります)を約2ビットにする必要があります。プライマリチャネルに残っている平均 2 ビットの 3 進数ビットに類似したビットは、(コスト比較を考慮する前のビット数)。パディングは、関連するデータがストリーム間でほぼ同時に到着するようにするためのものです。そうしないと、バイナリチャネルでは 1 ビット(上記の下線付き最後のビット)となり、3 進数チャネルでは約 3.17 ビット(すべてのコンマのコンマのみを含む)となります(遅延が異なる可能性のあるまったく異なる伝送モードは考慮していません)。
多重化を考慮しない場合、この方式では4バイナリビットまたは1.33ビットの読み出しに対して3バイナリ桁の読み出し効率が得られます。
この方法では、データ中に0と1が同数含まれていると仮定して、長さnのビット列または数値を2nビットで表現することができます。
ここで「?」は、それ以上の処理を必要としない全単射桁の値に対して「1」または「2」です。この方法は、ハフマン3進コードの単純な「暗黙の読み取り」と統計的に類似しています: 0、10、11(正味2/3または66.66%のコンマ)。
ランダムウォーク法や統計的総和法を用いると、すべての汎用データは平均2ビットのヘッダーまたはコンマと、それに加えて1ビット(最小0)のデータを持つことがわかる。
これは、すべての「0」(コンマ)の後に「1」または「2」が来るという保証はありません。これは、伝送におけるタイミングの問題を考慮して設計する際に役立つ特性です。
この方式では、3ビットのバイナリデータを読み取るのに2ビットの3進数データ、つまり1.5ビットのバイナリデータ/3進数データを読み取る効率があります。
この方法では、データ中に0と1が同数含まれていると仮定して、長さnのビット列または数値を2n+1ビットで表現できます。値0は0ビット、または空文字列""の後に1が続くものと想定できます。
0、10、110、111。この手法の主な利点は、効率が高いことに加えて、基数変換が不要なことです。基数変換では、まずストリーム全体を読み込んでから変換する必要があります。欠点は、平均数値長が長くなり、乱数生成と同様に、3進数伝送を支配するタイミングの問題が顕著になることです。m=2、n=2の場合、次のようになります。ただし、'(2)'の値は基本的に0ビットであることを忘れてはなりません。
したがって、この方法は、読み取りに対して2つの3進数桁の読み取り効率を持ちます。バイナリビット、または1.5625バイナリビット/3進数。。
書き込み効率は3進数2桁で、ビットまたは1.61バイナリビット/3進数、