格雷码 (gray code)
什么格雷码
每相邻的两个编码,只有一位不同
晦涩难懂,不急,看下面例子,秒懂
这里以四位二进制数为例子
格雷码例子
0000 和 0001 只有最后一个1不一样
0001和0011 只有第三位不同
Decimal(十进制) | Binary code(二进制) | Gray code (格雷码) |
---|---|---|
0 | 0000 | 0000 |
1 | 0001 | 0001 |
2 | 0010 | 0011 |
3 | 0011 | 0010 |
4 | 0100 | 0110 |
5 | 0101 | 0111 |
6 | 0110 | 0101 |
7 | 0111 | 0100 |
8 | 1000 | 1100 |
9 | 1001 | 1101 |
10 | 1010 | 1111 |
11 | 1011 | 1110 |
12 | 1100 | 1010 |
13 | 1101 | 1011 |
14 | 1110 | 1001 |
15 | 1111 | 1000 |
如何从二进制生成格雷码
方法一
1.将二进制的首位加到下一位
2.重复1,将第二位加到第三位,注意:相加均忽略进位,两个1相加为0
e.g
二进制: 1 0 1 1
加这个: 0 1 1
格雷结果:1 1 0 0
方法二:
格雷码为g3 g2 g1 g0 , 二进制为 b3 b2 b1 b0
则
g3=b3
g2=b3⊕b2
g1=b2⊕b1
g0=b1⊕b0
(类似于后面三位进行异或操作)
emmm 如此看来 好像两个方法差不多,姑且当两个吧~
为了加深理解,可以拿上面的码,自己选几个算算。