//格雷码
//格雷码是以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
#include<stdio.h>
#include<stdlib.h>
int main() {
int a=0, b=0, c=0, d=0;
int i;
printf("%d%d%d%d\n", a, b, c, d);
for (i = 1; i < 16; i++) {
if (i % 2 != 0) {
if (d == 0) {
d = 1;
}
else
d = 0;
}
else {
if (d == 1) {
if (c == 0) {
c = 1;
}
else
c = 0;
}
else if (c == 1) {
if (b == 0) {
b = 1;
}
else
b = 0;
}
else if(b==1){
if (a == 0) {
a = 1;
}
else
a = 0;
}
}
printf("%d%d%d%d\n",a,b,c,d)
}
system("pause");