二进制转格雷码
十进制 二进制 格雷码 转换关系表
| 十进制 | 二进制 | 格雷码 |
|---|---|---|
| 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 |
二进制如何转格雷码
转换规则有两个
- 格雷码的最高位为给定二进制的最高位
- 格雷码的其它位由当前二进制的当前位和上一位异或(同者为0异者为1)得到。
例如二进制 0101 转为格雷码为 0111
二进制的最高位为0,格雷码为0
二进制的第2位为1,二进制的上一位为0 异或后为 1
二进制的第3位为0,二进制的上一位为1 异或后为 1
二进制的第4位为1,二进制的上一位为1 异或后为 1
所以最后转为格雷码为0111
格雷码是什么
格雷码是一个二进制数系,其中两个相邻数的二进制位只有一位不同(任意两个相邻的代码只有一位二进制数不同)。格雷码由贝尔实验室的 Frank Gray 于 1940 年代提出,并于 1953 年获得专利。
举个例子, 3位二进制数的格雷码序列为:
000,001,011,010,110,111,101,100
- 000和001只有一位不同
- 001和011只有一位不同
- ...
- ...
- 101和100只有一位不同