編碼 | 解碼 | 視覺化

> 格雷碼 | 反射 | 二進位 <

// 格雷碼——相鄰數值之間僅有一個位元不同的二進位系統

0 字元
0 字元

>> 功能特色

[SINGLE-BIT]

單位距離

任兩個相鄰碼字之間僅有一個位元改變。

[ERROR-REDUCTION]

錯誤減少

在類比/數位轉換等場景中,有效減少毛刺與誤判。

[CYCLIC]

循環特性

首碼與尾碼同樣只差一個位元,適合環狀計數。

>> 技術說明

格雷碼的運作原理

格雷碼(Gray Code,又稱反射二進位碼)是一種編碼方式,使得每次狀態變化時只有一個位元翻轉。常見作法是將二進位數的每一位與前一位做 XOR,產生對應的格雷碼。由於同一時間只會有一位變化,可大幅降低位置編碼器與數位電路在切換瞬間的讀值錯誤。

格雷碼範例

Decimal | Binary | Gray Code
0       | 0000   | 0000
1       | 0001   | 0001
2       | 0010   | 0011
3       | 0011   | 0010
4       | 0100   | 0110
5       | 0101   | 0111
6       | 0110   | 0101
7       | 0111   | 0100

說明:任兩個相鄰的格雷碼之間僅有 1 位不同

為什麼要使用格雷碼

  • 旋轉編碼器與位置感測器
  • 卡諾圖(Karnaugh Map)化簡邏輯
  • 數位通訊中的錯誤控制
  • 健壯的狀態機與計數器設計
  • 類比訊號取樣時減少毛刺與跳變

>> 常見問題

什麼是格雷碼?

格雷碼是一種相鄰狀態只改變一個位元的二進位編碼方式,又稱反射二進位碼。與一般二進位遞增相比,它能避免多位同時翻轉,減少切換瞬間所產生的錯誤讀值。

如何將二進位轉換為格雷碼?

轉換規則:1)最高有效位元(MSB)保持不變;2)從次高位開始,每一位等於目前二進位位元與前一位的 XOR。公式:G[i] = B[i] XOR B[i-1]。例如,二進位 1011 對應的格雷碼為 1110。

為什麼編碼器喜歡使用格雷碼?

在傳統二進位當中,像 0111 跳到 1000 會有多位元同時翻轉,若感測器不同步,很容易讀到不存在的中間值。格雷碼一次只翻轉一位,在旋轉編碼器、滑動電位器等應用中可以顯著降低歧義。

格雷碼常見的應用有哪些?

格雷碼廣泛用於旋轉編碼器、卡諾圖邏輯化簡、數位通訊調變與錯誤修正、遺傳演算法中的染色體編碼,以及各種希望避免「多位跳變」的計數器與取樣系統。