在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),格雷码由0和1组成,由二进制码演化而成。
格雷码生成方法如下:
- 1位格雷码有两个码字
- (n+1)位格雷码中的前2n个码字等于n位格雷码的码字,按顺序书写,加前缀0
- (n+1)位格雷码中的后2n个码字等于n位格雷码的码字,按逆序书写,加前缀1
举例如下:
1位格雷码:
0
1
2位格雷码:
总共有2^2个码字,前一半的码字为1位的格雷码按顺序书写加前缀0,后一半的码字为1位格雷码逆序书写加前缀1,结果如下:
00
01
11
10
3位格雷码为:
在2位格雷码的基础上结果如下:
000
001
011
010
110
111
101
100
同理可以得出n位的格雷码。
二进制转化成格雷码:
原则是保留二进制码的最高位作为格雷码的最高位,格雷码的次高位为二进制编码的最高位和次高位相异或,格雷码的其他位和次高位的求法类似。
Binary Code :1011 要转换成Gray Code
1011 = 1(照写第一位), 1(第一位与第二位异或 1^0 = 1), 1(第二位异或第三位, 0^1=1), 0 (1^1 =0) = 1110
其实就等于 (1011 >> 1) ^ 1011 = 1110
时间: 2024-10-28 11:41:38