24h購物| | PChome| 登入
2012-01-06 16:42:35| 人氣5,610| 回應0 | 上一篇 | 下一篇

[C/C++] 格雷碼(Gray code)

推薦 0 收藏 0 轉貼0 訂閱站台

格雷碼(Gray code)是由貝爾實驗室的Frank Gray在1940年提出,用於在PCM脈衝編碼調變)方法傳送訊號時防止出錯,並於1953年三月十七日取得美國專利。格雷碼是一個數列集合,相鄰兩數間只有一個位元改變,為無權數碼,且格雷碼的順序不是唯一的。...

作法 : by wiki



#include<stdio.h>

void Print(unsigned n, int bit) {
    if(bit == 0)    return;
    Print(n>>1, bit-1);
    printf("%d", n&1);
}
int main() {
    int n;
    while(scanf("%d", &n) == 1) {
        unsigned i, j;
        for(i = 0; i < (1<<n); i++) {
            unsigned tmp = 0;
            for(j = 0; j < n; j++) {
                tmp |= (((i>>j)^(i>>(j+1)))&1)<<j;
            }
            Print(tmp, n);
            puts("");
        }
    }
    return 0;
}

台長: Morris
人氣(5,610) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 不分類 | 個人分類: 亂糟糟筆記 |
此分類下一篇:[C/C++] 用程式碼印出自己的程式碼
此分類上一篇:[筆記] Unicode In C/C++

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文