Yahoo奇摩知識+將於 2021 年 5 月 4 日 (美國東部時間) 終止服務。自 2021 年 4 月 20 日 (美國東部時間) 起,Yahoo奇摩知識+服務將會轉為唯讀模式。其他Yahoo奇摩產品與服務或您的Yahoo奇摩帳號都不會受影響。如需關於Yahoo奇摩知識+ 停止服務以及下載您個人資料的資訊,請參閱說明網頁。

8位元格雷碼的規則

如題~請各位大大提供有關8位元格雷碼的資料~~

感謝~

1 個解答

評分
  • 1 0 年前
    最佳解答

    格雷碼 (Gray code) 最大的特色在於:相鄰的兩個碼,只有一個 bit 的變化。

    這個特性使得它在現代的數位通訊領域中有很重要的應用。

    格雷碼與二進位碼 (Binary code) 之間可以互相轉換。

    可以用運算的,也可以用手工「翻轉」。

    既然是在這一版發問,當然是用電腦算囉!(而且 8-bit 用手轉起來很累...)

    請參考 http://en.wikipedia.org/wiki/Gray_code 中有詳細的介紹。

    以下是簡單的範例程式,是利用公式將一個值轉換成格雷碼:

    格雷碼的 Bit(n) = 二進位碼的 Bit(n) XOR Bit(n+1)

    4-bit 的輸出結果為:

    0000

    0001

    0011

    0010

    0110

    0111

    0101

    0100

    1100

    1101

    1111

    1110

    1010

    1011

    1001

    1000

    #include < stdio.h >

    #include < stdlib.h >

    #define G_BITS 4 // 改成 8 就是題目所需

    void GrayCode(int Code, int Bits);

    int main(void)

    {

    int i;

    int nMax = 1 << G_BITS;

    for (i = 0; i < nMax; i++) GrayCode(i, G_BITS);

    system("pause");

    return 0;

    }

    void GrayCode(int Code, int Bits)

    {

    int i, B;

    char G[32] = {0};

    for (i = 0; i < Bits; i++)

    {

    B = Code & 1;

    Code >>= 1;

    B ^= (Code & 1);

    G[Bits-1-i] = 0x30 + B;

    }

    printf("%s\n", G);

    }

還有問題?馬上發問,尋求解答。