您當前的位置:首頁 > 文化

格雷碼

作者:由 Bat特白 發表于 文化時間:2017-09-12

格雷碼(Gray Code)

是由貝爾實驗室的弗蘭克·格雷(Frank Gray,1887-1969)在20世紀40年代提出,並在1953年取得美國專利“Pulse Code Communication”。最初目的是在使用PCM(Pusle Code Modulation)方法傳輸數字訊號的過程中降低錯誤可能。

格雷碼

格雷碼

格雷碼

如果將

2^n

個長為

n

的二進位制串組成一個序列,使得將序列按圓形排列時一對相鄰的二進位制串只有一位不同,則稱這些序列為

n階格雷碼

或簡稱

格雷碼(Gray code)

在格雷碼中,任意兩個相鄰的程式碼只有一位二進位制數不同,最大碼與最小碼之間也僅一位不同,即“首尾相連”,因此又稱

迴圈碼

反射碼

【例】長度為3的普通二進位制碼為:000、001、010、011、100、101、110、111;而長度為3的格雷碼為:000、001、011、010、110、111、101、100。

例如:在數字系統、機械工具、汽車制動等系統中,有時需要感測器產生的數字值來指示位置。下圖是編碼盤概念圖(此圖中

n=3

),它把圓周等分成

2^n

個扇形,每個扇形分成

n

個部分,並且給每個部分賦値,暗的區域與對應的邏輯1的訊號源相連,亮的區域沒有連線,將其解釋為邏輯0。

盤可以旋轉,而觸點(圖中箭頭)將產生一個

n

位二進位制編碼,但當觸點靠近兩個扇形的邊界時,在讀出觸點位置時可能發生錯誤。

格雷碼

圖(a)使用普通二進位制碼,讀出觸點位置時的錯誤可能達到最大化——3位都是錯的;而圖(b)則使用格雷碼對編碼盤上的亮暗區域編碼,使得其連續的碼字之間只有一個數位變化,錯誤的影響可以降到最低。

n

位二進位制的碼字,從右到左以0到

n-1

編號,一個

n

位普通二進位制碼記為

B_{n-1}…B_1B_0

,一個

n

位格雷碼記為

G_{n-1}…G_1G_0

。普通的

n

位普通二進位制碼和

n

位格雷碼之間的轉換方法如下所示。

(a) 普通二進位制碼

\rightarrow n

位格雷碼:

格雷碼

其中

\oplus

表示異或運算(即模2加法),

0\oplus0=0

0\oplus1=1

1\oplus0=1

1\oplus1=0

轉換方法的示意圖為:

格雷碼

例如當

n=3

時,3位普通二進位制碼和3位格雷碼之間的對應如下表所示。

格雷碼

(b)

n

位格雷碼

\rightarrow

普通二進位制碼:

格雷碼

轉換方法的示意圖為

格雷碼

例如當

n=3

時,3位普通二進位制碼和3位格雷碼之間的對應如表?所示。

格雷碼

之後將慢慢介紹格雷碼的一些有趣應用。