エンコード | デコード | 可視化

> unary | タリー | シンプル <

// ユーナリ符号化 - タリー記号で整数を表す最もシンプルな方法

[SIMPLE]

最も単純なコード

最も基本的な符号化で、タリー記号を数えるだけです。

[VISUAL]

視覚的な表現

タリー記号による分かりやすいビジュアル表示。

[VARIANTS]

複数のバリアント

標準形、反転形、切り詰め形のユーナリコードに対応。

>> 技術情報

ユーナリ符号化の仕組み:

ユーナリ符号化では、整数 n を n 個の同じ記号とそれに続く終端記号で表します。標準ユーナリでは 1 の繰り返し n 個のあとに 0 を付けます。反転ユーナリでは 0 の繰り返し n 個のあとに 1 を付けます。切り詰めユーナリでは既知の範囲で最大値のとき終端記号を省略します。

ユーナリのバリアント:

標準ユーナリ: 0 → 0 1 → 10 3 → 1110 5 → 111110 反転ユーナリ: 0 → 1 1 → 01 3 → 0001 5 → 000001 切り詰めユーナリ 範囲 0–3: 0 → 空 1 → 1 2 → 11 3 → 111

ユーナリ符号化を使う理由:

  • >他の符号の構成要素として利用
  • >Golomb と Rice 符号での商部分に利用
  • >Elias 系列符号での長さ表現に利用
  • >実装が非常に簡単
  • >圧縮アルゴリズムの学習用途に最適

>> よくある質問

ユーナリ符号化とは何ですか?

ユーナリ符号化は最も単純な可変長コードです。整数 n を、同じ記号通常は 1 を n 回繰り返し、その後に別の記号通常は 0 を終端記号として付けることで表します。これは二進数版のタリー記号のようなものです。

ユーナリはいつ効率的ですか?

ユーナリ符号化が効率的なのは、ほとんどの値が 0 または 1 である非常に小さな整数や偏った分布の場合だけです。整数 n を表すのに n プラス 1 ビットが必要になるため、大きな値には非常に非効率的です。そのため主に他の符号の内部コンポーネントとして使われます。

切り詰めユーナリとは何ですか?

切り詰めユーナリは取り得る値の範囲が既知のときに使われます。最大値には終端記号が不要で、長さだけで一意に識別できます。これにより最大値のためのビットを一つ節約できます。

ユーナリ符号化はどこで使われていますか?

ユーナリ符号化単体で使われることはまれですが、Golomb や Rice 符号の商部分、Elias Gamma や Delta 符号の長さ表現、その他多くの可変長符号の重要な構成要素になっています。多くの圧縮アルゴリズムの基礎となる概念です。

他の言語