也談自動生成格雷碼演算法

2021-08-10 12:38:02 字數 422 閱讀 9109

工作10年了,總覺得自己是不是應該學點什麼。今天突發奇想,是不是可以用程式來自動生成格雷碼?

其實只要看懂了這張圖,格雷碼的編譯碼都是小菜一碟。格雷碼的每乙個位其實都是對應二進位製碼的位跟其較高位的異或。簡單說就是g0 = b1 ^ b0;

拿起gcc就開始寫,編碼函式就這麼完成了。

int grayencode(int x)

然後就是解碼了,解碼相對複雜點。當然有了編碼程式,你也可以用窮舉的辦法。但這裡其實可以不用窮舉。將上圖中的過程反過來,對於n位的格雷碼解碼程式如下。

int graydecode(int x)

在wiki上發現乙個解碼程式寫的非常好。就是不清楚具體是怎麼來的。

unsigned int graydecode(unsigned int num)

return num;

}

自動生成格雷碼演算法

典型的二進位制格雷碼 binary gray code 簡稱格雷碼,在一組數的編碼中,若任意兩個相鄰的 只有一位二進位制數不同,則稱這種編碼為 格雷碼 gray code 另外由於最大數與最小數之間也僅一位數不同,即 首尾相連 因此又稱 迴圈碼或 反射碼。自動生成格雷碼的演算法主要利用以下規則 1....

自動生成格雷碼

出處 blog.csdn.net beiyeqingteng 問題 產生n位元的所有格雷碼。格雷碼 gray code 是乙個數列集合,每個數使用二進位來表示,假設使用n位元來表示每個數字,任兩個數之間只有乙個位元值不同。例如以下為3位元的格雷碼 000 001 011 010 110 111 10...

生成格雷碼

程式設計題 生成格雷碼 在一組數的編碼中,若任意兩個相鄰的 只有一位二進位制數不同,則稱這種編碼為格雷碼 gray code 請編寫乙個函式,使用遞迴的方法生成n位的格雷碼。給定乙個整數n,請返回n位的格雷碼,順序為從0開始。測試樣例 1返回 0 1 思想 用遞迴法實現,把求n位格雷碼分解為求n 1...