格雷碼的輸出

2021-07-09 02:37:59 字數 1020 閱讀 6606

在一組數的編碼中,若任意兩個相鄰的**只有一位二進位制數不同,則稱這種編碼為

格雷碼

例如當n為1的時候,格雷碼為0,1;

n為2的時候,格雷碼為00,01,11,10;n為3的時候,格雷碼為000,001,011,010,110,111,101,100

單純從上面看,這樣我們需要輸入n的時候輸出相應的格雷碼應該怎麼辦?

我們看上面的變換過程,假如我們知道了n-1時候的格雷碼,怎麼樣求出n時候的格雷碼呢。觀察可以看出,n時候的格雷碼首先是在n-1的格雷碼情況下順序在最高位新增0,然後反序在最高位新增1.這樣我們就可以得到下面的程式

//格雷碼輸出

#include #include #include #include #include using namespace std;

void gray(vector&v , int bit , int n)

for(int i = v.size()-1 ; i >= 0 ; i--)

v.swap(temp); //交換

gray(v,bit+1,n);

}vectorgetgray(int n)

int main()

//以上**實現了unsigned int型資料到格雷碼的轉換,最高可轉換32位自然二進位製碼,超出32位將溢位。

所以上面的**可以變為:

//格雷碼輸出

#include #include #include #include #include using namespace std;

vectorgetgray(int n)

return v;

}int main()

cout<}

return 0;

}

不過這樣輸出的是十進位制的數字。

生成格雷碼

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

生成格雷碼

題目描述 在一組數的編碼中,若任意兩個相鄰的 只有一位二進位制數不同,則稱這種編碼為格雷碼 gray code 請編寫乙個函式,使用遞迴的方法生成n位的格雷碼。給定乙個整數n,請返回n位的格雷碼,順序為從0開始。測試樣例 1返回 0 1 1 n 1時,返回0,1 2 n 2時,返回00,01,10,...

關於格雷碼

典型二進位制格雷碼 binary gray code 簡稱格雷碼,因1953年公開的弗蘭克 格雷 frank gray,18870913 19690523 專利 pulse code communication 而得名。在一組數的編碼中,若任意兩個相鄰的 只有一位二進位制數不同,則稱這種編碼為格雷碼...