格雷码 - OI Wiki
格雷码_百度百科
简介
格雷码(Gray Code),又称为二进制格雷码或循环二进制码,是一种二进制编码方式。它得名于贝尔实验室的工程师弗兰克·格雷(Frank Gray),他于1940年代提出了这种编码方式,并在1953年获得了相关专利“Pulse Code Communication”。格雷码在数字系统、通信、模拟-数字转换和位置-数字转换等领域有广泛应用。
码表
十进制数 | 4位自然二进制码 | 4位典型格雷码 | 十进制余三格雷码 | 十进制空六格雷码 | 十进制跳六格雷码 | 步进码 |
---|---|---|---|---|---|---|
0 | 0000 | 0000 | 0010 | 0000 | 0000 | 00000 |
1 | 0001 | 0001 | 0110 | 0001 | 0001 | 00001 |
2 | 0010 | 0011 | 0111 | 0011 | 0011 | 00011 |
3 | 0011 | 0010 | 0101 | 0010 | 0010 | 00111 |
4 | 0100 | 0110 | 0100 | 0110 | 0110 | 01111 |
5 | 0101 | 0111 | 1100 | 1110 | 0111 | 11111 |
6 | 0110 | 0101 | 1101 | 1010 | 0101 | 11110 |
7 | 0111 | 0100 | 1111 | 1011 | 0100 | 11100 |
8 | 1000 | 1100 | 1110 | 1001 | 1100 | 11000 |
9 | 1001 | 1101 | 1010 | 1000 | 1000 | 10000 |
10 | 1010 | 1111 | ---- | ---- | ---- | ---- |
11 | 1011 | 1110 | ---- | ---- | ---- | ---- |
12 | 1100 | 1010 | ---- | ---- | ---- | ---- |
13 | 1101 | 1011 | ---- | ---- | ---- | ---- |
14 | 1110 | 1001 | ---- | ---- | ---- | ---- |
15 | 1111 | 1000 | ---- | ---- | ---- | ---- |
构造方式
格雷码有很多构造方式,在这里介绍一下“镜像构造”这种方式。
格雷码的镜像构造方式是一种通过递归生成格雷码的方法。其核心思想是利用前一个格雷码序列的镜像对称性来生成下一个格雷码序列。具体步骤如下:
1. 基础情况
-
当 n=1 时,格雷码序列为:
G1=[0,1]
2. 递归步骤
-
假设已经生成了 n−1 位的格雷码序列 Gn−1,则 n 位的格雷码序列 Gn 可以通过以下方式生成:
-
复制:将 Gn−1 复制一份,作为 Gn 的前半部分。
-
镜像:将 Gn−1 反转,作为 Gn 的后半部分。
-
前缀添加:在前半部分的每个码字前添加
0
,在后半部分的每个码字前添加1
。
-
3. 示例
-
1位格雷码:
G1=[0,1]G1=[0,1] -
2位格雷码:
G2=[00,01,11,10]G2=[00,01,11,10] -
3位格雷码:
G3=[000,001,011,010,110,111,101,100]G3=[000,001,011,010,110,111,101,100]
4. 总结
镜像构造方式通过递归和镜像对称性,能够高效地生成任意位数的格雷码序列。这种方法不仅简单直观,而且保证了相邻码字之间只有一位不同,符合格雷码的特性。