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;
}
