一. 格雷码的编码规则
递归推导方法:
-
1位格雷码有两个码字(0和1)
-
(n+1)位格雷码中的前2n个码字等于n位格雷码的码字,按顺序书写,加前缀0
-
(n+1)位格雷码中的后2n个码字等于n位格雷码的码字,按逆序书写,加前缀1
格雷码形成的枚举方法:
从0开始,依次重复以下步骤,每变动一次对应一个格雷码,变动的总次数为该格雷码对应的十进制数。
1.翻转最后一位
2.从右往左找到第一个1,将其前一位翻转;
二. 二进制和格雷码的关系
编码(二进制-->格雷码):
-
对n位二进制的码字,从右到左,以0到n-1编号
-
如果二进制码字的第i位和i+1位相同,则对应的格雷码的第i位为0,否则为1(最高位即第n-1位不变),即异或操作。
解码(格雷码-->二进制):
从左边第二位起,将每位与左边一位解码后的值异或,作为该位解码后的值(最左边一位依然不变)。依次异或,直到最低位。