格雷碼

  • 格雷碼(Gray Code)
    在一組數的編碼中,若任意兩個相鄰的代碼只有一位二進制數不同,則稱這種編碼爲格雷碼(Gray Code),另外由於最大數與最小數之間也僅一位數不同,即“首尾相連”,因此又稱循環碼或反射碼。
    假設原始的值從0開始,格雷碼產生的規律是:
    第一步,改變最右邊的位元值;
    第二步,改變右起第一個爲1的位元的左邊位元;
    第三步,第四步重複第一步和第二步,直到所有的格雷碼產生完畢(換句話說,已經走了(2^n) - 1 步)。

用一個例子來說明:
  假設產生3位元的格雷碼,原始值位 000
  第一步:改變最右邊的位元值: 001
  第二步:改變右起第一個爲1的位元的左邊位元: 011
  第三步:改變最右邊的位元值: 010
  第四步:改變右起第一個爲1的位元的左邊位元: 110
  第五步:改變最右邊的位元值: 111
  第六步:改變右起第一個爲1的位元的左邊位元: 101
  第七步:改變最右邊的位元值: 100
如果仔細觀察格雷碼的結構,我們會有以下發現:
  1、除了最高位(左邊第一位),格雷碼的位元完全上下對稱(看下面列表)。比如第一個格雷碼與最後一個格雷碼對稱(除了第一位),第二個格雷碼與倒數第二個對稱,以此類推。
000
001
011
010
110
111
101
100

也就是說,n位元格雷碼是基於n-1位元格雷碼產生的。

發佈了54 篇原創文章 · 獲贊 12 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章