發現數電書中對於格雷碼並沒有很好地解釋,這裏保留下來所理解的知識供自己日後查看。這裏主要說明排列規律和轉換。
格雷碼特點:
任意兩個相鄰的代碼只有一位二進制數不同。並且首尾相連,屬於循環碼(這裏我發現百度有說不是的,特此註明)。
鏡像排列規律:
如果要畫卡諾圖,鏡像格雷碼是必須的。生成二進制格雷碼方式2的n次方位元的格雷碼可以從n-1位元的格雷碼以上下鏡射後加上新位元的方式快速的得到,如圖所示。
具體步驟:
- 寫出 0, 1
- 在1的基礎上,構造鏡像0,1,1,0
- 在2的基礎上,從上向下擴展最高位0,從下到上拓展最高位1,直至對稱線兩個相遇停止。這樣就變成了00,01,11,10
- 在3的基礎上,重複2,3步驟,得到000,001,011,010,110,111,101,100
- 按照上述方法不停拓展得到你需要的位數格雷碼,即n位格雷碼是基於n-1位格雷碼產生的。
轉換:
自然二進制轉換爲格雷碼方法:
保留二進制碼的最高位作爲格雷碼的最高位,而次高位格雷碼爲二進制碼的高位與次高位相異或,而格雷碼其餘各位與次高位的求法相類似。
這裏引用一張說明的很好的圖片:
格雷碼轉換爲自然二進制碼的方法:
保留格雷碼的最高位作爲自然二進制碼的最高位,而次高位自然二進制碼爲高位自然二進制碼與次高位格雷碼相異或,而自然二進制碼的其餘各位與次高位自然二進制碼的求法相類似。
同樣給出圖解,注意這裏異或的對象由待轉換數變成了轉換結果中的數:
文章參考:
- 維基百科格雷碼:https://zh.wikipedia.org/zh-cn/%E6%A0%BC%E9%9B%B7%E7%A0%81
- 格雷碼轉換:https://blog.csdn.net/jingfengvae/article/details/51691124
- 格雷碼詳解:https://www.cnblogs.com/zhuruibi/p/8988044.html