风波邪人

幸福,幸福就是心里有那么一个人,不管你走到哪儿,也不管她走到哪儿,心里永远想着她

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

格雷码(Gray code),又叫循环二进制码或反射二进制码 在数字系统中只能识别0和1,各种数据要转换为二进制代码才能进行处理,格雷码是一种无权码,采用绝对编码方式,典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、自补特性使得求反非常方便。格雷码属于可靠性编码,是一种错误最小化的编码方式。

一般的,普通二进制码与格雷码可以按以下方法互相转换:

 

  二进制码->格雷码(编码):从最右边一位起,依次将每一位与左边一位异或(XOR),作为对应格雷码该位的值,最左边一位不变(相当于左边是0);

 

  格雷码-〉二进制码(解码):从左边第二位起,将每位与左边一位解码后的值异或,作为该位解码后的值(最左边一位依然不变).

举例:

     原码:000 001 010 011 100 101 110 111
     编码:000 001 011 010 110 111 101 100
     解码:000 001 010 011 100 101 110 111
原码:a0-a1-a2-a3...ai
编码:b0-b1-b2-a3...bi
 
        b0 = a0;
        b1 = a1 XOR a0;
        b2 = a2 XOR a1;
        b3 = a3 XOR a2;
        ...
        bi = ai XOR a(i-1);
解码:a0-a1-a2-a3...ai
 
        a0 = b0;
        a1 = b1 XOR a0;
        a2 = b2 XOR a1;
        a3 = b3 XOR a2;
        ...
        ai = bi XOR a(i-1);
 

  数学(计算机)描述:

  原码:p[n:0];格雷码:c[n:0](n∈N);编码:c=G(p);解码:p=F(c);

 

  书写时按从左向右标号依次减小,即MSB->LSB,编解码也按此顺序进行

 

  编码:

 

  ...................c[n]=p[n],

 

  ...................c[i]=p[i] XOR p[i+1] (iN,n-1i0)

 

  解码:

 

  ...................p[n]=c[n],

 

  ...................P[i]=c[i] XOR p[i+1] (iN, n-1i0)。

 

PS:关于Gray Code 的C语言程序和Verilog HDL程序,后续会附加进去。

 

 

posted on 2012-02-13 15:07  风波邪人  阅读(686)  评论(0编辑  收藏  举报