格雷碼是以n位的二進位制來表示數。 與普通的二進位制表示不同的是,它要求相鄰兩個數字只能有1個數字不同。 首尾兩個數字也要求只有1位之差。
有很多演算法來生成格雷碼。以下是較常見的一種: 從編碼全0開始生成。 當產生第奇數個數時,只把當前數字最末位改變(0變1,1變0) 當產生第偶數個數時,先找到最右邊的乙個1,把它左邊的數字改變。 用這個規則產生的4位格雷碼序列如下:
0000
0001
0011
0010
0110
0111
0101
0100
1100
1101
1111
1110
1010
1011
1001
1000
lowbit(x)是求x最低位1對應的值
for example 6的二進位制是0110,lowbit(6)=0010=2
int
lowbit
(int x)
此題需要求最低位1左邊的一位,並改變他,只需要lowbit一下再左移一位再異或即可
#include
void
show
(int a,
int n)
printf
("\n");
}voidf(
int n)
else}}
intmain()
生成格雷碼
程式設計題 生成格雷碼 在一組數的編碼中,若任意兩個相鄰的 只有一位二進位制數不同,則稱這種編碼為格雷碼 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 而得名。在一組數的編碼中,若任意兩個相鄰的 只有一位二進位制數不同,則稱這種編碼為格雷碼...