Grey Code
06 Nov 2012格雷码(循环码)是任意两个相邻数的代码只有一位二进制数不同的BCD码,它与奇偶校验码同属可靠性编码。
维基百科
例如:
2位元格雷码</p> 00 01 11 10 |
3位元格雷码</p> 000 001 011 010 110 111 101 100 |
4位元格雷码</p> 0000 0001 0011 0010 0110 0111 0101 0100 1100 1101 1111 1110 1010 1011 1001 1000 |
4位元2进制原始码</p> 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 |
运行结果:
代码:
#include <stdio.h> #include <stdlib.h> int n; char s[17]; void dfs(int i) { if(i == n) { printf("%s\n", s); } else { dfs(i + 1); if(s[i] == '0') { s[i] = '1'; } else { s[i] = '0'; } dfs(i + 1); } } int main() { int i ; while(1) { scanf("%d", &n); if(!n) { break; } for(i = 0;i < 17;i++) { s[i] = '0'; } s[n] = '\0'; dfs(0); printf("\n"); } system("pause"); return 0; }