格雷码简介及格雷码与二进制的转换程序文.pdfVIP

  • 28
  • 0
  • 约6.53千字
  • 约 5页
  • 2021-11-08 发布于福建
  • 举报

格雷码简介及格雷码与二进制的转换程序文.pdf

格雷码简介及格雷码与二进制的转换程序 一、格雷码简介 格雷码(英文: Gray Code, Grey Code, 又称作葛莱码,二进制循环码)是 1880 年由法国工程师 Jean-Maurice-Emlle Baudot 发明的一种编码 [1] ,因 Frank Gray 于 1953 年申请专利 “Pulse Code Communication ”得名。当初是为了机械应用,后来在电报上取得了巨大发展 [2] ,现在则常用于模拟- 数字转换 [3] 和转角-数字转换中 [4] 。 典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环、单步特性消除了随机取数时出 现重大误差的可能,它的反射、自补特性使得求反非常方便 [5] 。 格雷码属于可靠性编码,是一种错误最小化的编码,因为它大大地减少了由一个状态到下一个状态时 电路中的混淆。由于这种编码相邻的两个码组之间只有一位不同,因而在用于模-数转换中,当模拟量发 生微小变化而可能引起数字量发生变化时,格雷码仅改变一位,这样与其它码同时改变两位或多位的情况 相比更为可靠,即可减少出错的可能性.这就允许代码电路能以较少的错误在较高的速度下工作。 格雷码在现代科学上获得了广泛的应用,人们还发现智力玩具九连环的状态变化符合格雷码的编码规 律,汉诺塔的解法也与格雷码有关。 除了已知的特点,格雷码还有一些鲜为人知的性质。多数数字电子技术和计算机技术的文献认为格雷 码是无权码,只有 J.F.A. Thompson 认为可以从格雷码直接转换成十进制数 [6] 。如果将格雷码的 “权 ”及格雷码的奇偶性等性质在 数学上给予证明,将有助于格雷码研究与应用的发展,有助于自动化技术的发展,还可有助于计算机科学 的发展。 二、 格雷码与二进制的转换程序 * 本程序采用递推的方法进行推导 ,可以转换 0~2147483647 之间的数 (1~31 位 ) * 推导方式如下 ( 以三位格雷码为例 ): * 序号 格雷码 格雷码实值 二进制码 二进制实值 * 0 000 0 000 0 * 1 001 1 001 1 * 2 011 3 010 2 * 3 010 2 011 3 * 4 110 6 100 4 * 5 111 7 101 5 * 6 101 5 110 6 * 7 100 4 111 7 * 由上面的数据可看出 .如果 , 按照序号 的方式遍历格雷码 .其编 * 码实值是按自然数顺序排列 .反之 ,如果按此顺序遍历其二进制实值 .则会发 * 现遍历过的数据的个数减一即为二进制码所对应格雷码的实值 . 再观察序号 * 顺序 ,我们会发现 : 如果把二进制码分半 ,前半部分从前向后遍历 ,后半部分 * 从后向前遍历 .如果分半部分可再分 ,则再将其分半 .并按照前半部分从前向 * 后遍历 ( 分解 ), 后半部分从后向前遍历的方式遍历 ( 分解 ). 直到不可分 . 即可 * 实现按序号所描述顺序遍历二进制码 .如果 ,按此顺序遍历二进制码 ,我们可 * 以很方便地在序列中找到所要的二进制码与其对应的格雷码 . 本思想可以很 * 方便地用递归实现 .这样就实现了二进制到格雷码的转换 .同样 ,格雷码到二 * 进制的转换 ,也可以用相同的方法推出 .为了加快运算 ,我们跳过不必要的遍 * 历将递归改为递推 .这样就实现了格雷码与二进制之间的快速转换 . * 此算法的时间复杂度约为 O(n),n 为要转换数据的 BIT 数 . * ***********************************************************

文档评论(0)

1亿VIP精品文档

相关文档