格雷码与二进制码转化成格雷码
在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(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
posted on 2015-07-07 17:34 cocos2014 阅读(3687) 评论(0) 编辑 收藏 举报