編碼 | 解碼 | 視覺化

> unary | 計數刻度 | 簡單 <

// Unary 一元編碼——以刻度計數表示整數的最簡方式

[SIMPLE]

最簡單的編碼

最基礎的表示方式,只要按照刻度數一數即可。

[VISUAL]

視覺化呈現

以計數刻度為基礎的直觀視覺化效果。

[VARIANTS]

多種變體

支援標準、反轉與截斷等多種 Unary 變體。

>> 技術說明

Unary 一元編碼的運作原理:

Unary 一元編碼使用 n 個相同符號加上一個終止符來表示整數 n。標準一元編碼使用 n 個 1 後接一個 0。反轉一元編碼使用 n 個 0 後接一個 1。截斷一元編碼在已知取值範圍時,對最大值省略終止符。

Unary 編碼變體:

標準一元編碼: 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

為何會用到 Unary 編碼:

  • >作為其他編碼方案的基礎組件
  • >用於 Golomb 與 Rice 編碼中的商部分
  • >作為 Elias 系列編碼的長度前綴
  • >實作非常容易
  • >適合用來教學與展示壓縮演算法

>> 常見問題

什麼是 Unary 一元編碼?

Unary 一元編碼是最簡單的一種可變長度編碼。它將整數 n 表示為某個符號通常是 1 連續重複 n 次,再加上一個不同符號通常是 0 作為終止標記。這類似以二進位刻度記錄計數。

Unary 什麼時候比較有效率?

Unary 通常只在整數非常小,或資料分佈極度偏斜大部分值為 0 或 1 時才算有效率。表示整數 n 需要 n 加 1 個位元,因此對較大的數相當低效。它多半作為其他編碼方案中的一個元件存在。

什麼是截斷一元編碼?

當可取值範圍已知時,可以使用截斷一元編碼。對於範圍中的最大值,不再加上終止符,因為僅靠長度就能唯一識別,這樣可以為最大值省下一個位元。

Unary 編碼通常用在哪裡?

Unary 編碼本身很少單獨使用,但在 Golomb 與 Rice 編碼的商部分、Elias Gamma 與 Delta 編碼的長度部分,以及許多其他可變長度編碼中都是關鍵組成,亦是許多壓縮演算法的重要基礎概念。

其他語言