格雷碼轉換為二進位制
反射二進位制碼或格雷碼是對二進位制數制的排序,使得兩個連續的值僅在一個位元(二進位制數字)上有所不同。格雷碼在硬體生成的二進位制數的正常序列中非常有用,因為在從一個數到下一個數的轉換過程中可能會導致錯誤或歧義。因此,格雷碼可以輕鬆地消除此問題,因為在任意兩個數之間的轉換過程中,只有一個位元的值發生變化。
格雷碼到二進位制碼的轉換
格雷碼用於旋轉和光學編碼器、卡諾圖和錯誤檢測。兩個相鄰格雷碼的漢明距離始終為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。
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP