格雷碼轉換為二進位制


反射二進位制碼或格雷碼是對二進位制數制的排序,使得兩個連續的值僅在一個位元(二進位制數字)上有所不同。格雷碼在硬體生成的二進位制數的正常序列中非常有用,因為在從一個數到下一個數的轉換過程中可能會導致錯誤或歧義。因此,格雷碼可以輕鬆地消除此問題,因為在任意兩個數之間的轉換過程中,只有一個位元的值發生變化。

格雷碼到二進位制碼的轉換

格雷碼用於旋轉和光學編碼器、卡諾圖錯誤檢測。兩個相鄰格雷碼的漢明距離始終為1,並且第一個格雷碼和最後一個格雷碼的漢明距離也始終為1,因此它也被稱為迴圈碼。您可以使用兩種方法將格雷碼轉換為二進位制數。

使用卡諾(K)圖

您可以使用其他方法構造格雷碼,但它們可能無法像上面給出的方法那樣並行執行。例如,3位格雷碼可以使用K圖進行構造,如下所示

十進位制
格雷碼
二進位制
0
000
000
1
001
001
2
011
010
3
010
011
4
110
100
5
111
101
6
101
110
7
100
111

使用異或()運算

這是一種從格雷碼獲得二進位制數的非常簡單的方法。以下是針對n位二進位制數的步驟 −

  • 二進位制碼的最高有效位(MSB)始終等於給定二進位制數的MSB。
  • 輸出二進位制碼的其他位可以透過檢查該索引處的格雷碼位來獲得。如果當前格雷碼位為0,則複製前一個二進位制碼位,否則複製前一個二進位制碼位的反碼。

例如,對於3位二進位制數,假設二進位制數字為b2、b1、b0,其中b2是最高有效位(MSB),b0是最低有效位(LSB)。格雷碼數字為g2、g1、g0,其中g2是最高有效位(MSB),g0是最低有效位(LSB)。

格雷碼
g2g1g0
二進位制
b2b1b0
000
000
001
001
011
010
010
011
110
100
111
101
101
110
100
111

因此,您使用k圖求解布林表示式,將得到b2=g2,b1=g1⊕g2,以及b0=g0⊕g1⊕g2

類似地,您可以將n位(bnb(n-1)...b2b1b0)二進位制數轉換為格雷碼(gng(n-1)...g2g1g0)。對於最低有效位(LSB),bn=gn,b(n-1)=g(n-1)⊕gn,…. b1=g1⊕g2⊕g3...⊕gn,以及b0=g0⊕g1⊕g2⊕g3...⊕gn

示例 − 將格雷碼100111轉換為二進位制數。

因此,根據上述演算法,

b5=g5=1=1

b4=g5⊕g4 =1⊕0 =1

b3=b4⊕g3 =1⊕0 =1

b2=b3⊕g2 =1⊕1 =0

b1=b2⊕g1 =0⊕1 =1

b0=b1⊕g0 =1⊕1 =0

因此,二進位制數將為111010。

更新於: 2023年10月31日

56K+ 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.