格雷码¶
前置知识¶
二进制
目标¶
格雷码的生成过程,计算方法的代码模板
What¶
格雷码有什么作用¶
格雷码(Gray code)是由贝尔实验室的Frank Gray在1940年提出,用于在PCM(脉冲编码调变)方法传送讯号时防止出错,并于1953年三月十七日取得美国专利。格雷码是一个数列集合,相邻两数间只有一个位元改变,为无权数码,且格雷码的顺序不是唯一的。
格雷码能避免讯号传送错误的原理: 传统的二进制系统例如数字3的表示法为011,要切换为邻近的数字4,也就是100时,装置中的三个位元都得要转换,因此于未完全转换的过程时装置会经历短暂的,010,001,101,110,111等其中数种状态,也就是代表着2、1、5、6、7,因此此种数字编码方法于邻近数字转换时有比较大的误差可能范围。格雷码的发明即是用来将误差之可能性缩减至最小,编码的方式定义为每个邻近数字都只相差一个位元,因此也称为最小差异码,可以使装置做数字步进时只更动最少的位元数以提高稳定性。
手动构造¶
镜像构造¶
计算方法(重点)¶
G(0) = 0 ^ (0 >> 1) = 0000
G(1) = 1 ^ (1 >> 1) = 0001
G(2) = 2 ^ (2 >> 1) = 0011
G(3) = 3 ^ (3 >> 1) = 0010
G(4) = 4 ^ (4 >> 1) = 0110
总结¶
手动构造、镜像构造
计算方法的代码模板 n ^ (n >> 1)