二进制 : 1 0 1 1 1 1 1 0 1
| \ | \ | \ | \ | \ | \ | \ | \ |
格雷码 : 1 1 1 0 0 0 0 1 1
规则:
异或 ^
1 ^ 0 = 1
1 ^ 1 = 0
0 ^ 0 = 0
// ej : 二进制数组
// gl : 格雷码数组
void f(char * ej, char * gl){
gl[0] = ej[0];// 第一位直接复制
int i = 1;
while(ej[i] != '\0'){// 后面的 开始用前面的与后面的 异或
gl[i] = '0' + (char)(ej[i - 1] - '0') ^ (ej[i] - '0');
i++;
}
}