格雷碼 藍橋杯

2021-09-20 07:10:26 字數 801 閱讀 1584

格雷碼是以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 而得名。在一組數的編碼中,若任意兩個相鄰的 只有一位二進位制數不同,則稱這種編碼為格雷碼...