格雷码(英文:Gray Code,又称作葛莱码,二进制循环码)是1880年由法国工程师Jean-Maurice-Emlle Baudot发明的一种编码。因由贝尔实验室的Frank Gray于20世纪40年代提出用来在使用PCM方法传送讯号时避免出错,并于1953年3月17日取得美国专利而得名。
因为,虽然Bin 码可以直接由数/模转换器转换成模拟信号,但在某些情况,例如从十进制的7 ( 0111 ) 过渡为8 ( 1000 )时, 4 bit 的Bin 码每一个bit 都要发生变化,在实际电路中数码各个bit 的状态变化是占有一点时值的,4个bit 的变化不可能绝对同时发生,系统在这期间检测到的编码就会是“误码”!如1100、1111等等。而Gray 码则没有这一缺点,它在相邻数字量间过渡时,仅有一个bit 发生变化。它克服了由一个状态到下一个状态时逻辑的混淆。
Gray 码的定义是,相邻数码仅有一个bit 不同;且,一组Gray码的最大数码与最小数码也仅有一个bit 不同。(这就是它的另一个名称“循环码”的由来)
由定义可知,Gray Code 的编码方式不是唯一的,我们这里讨论的是最常用的一种(典型格雷码)。为了不致发生歧义,我们约定:在不作特别提醒的情况下,我们所提到的Gray 码都是指“典型格雷码”。
Gray码属于可靠性编码,是一种错误最小化的编码方式。
但Gray 码不是权重码,每一位数码没有确定的大小,不能直接进行比较大小和算术运算,也不能直接转换成模拟量信号,所以需要进行 Gray 码到 Bin 码的解码变换。
要了解 Gray 码到 Bin 码的解码原理,就得先从 Bin 码到 Gray 码的变换开始认识 Gray 码的编码原理。