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

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

ID:9054652

大小:39.50 KB

页数:5页

时间:2018-04-16

格雷码简介及格雷码与二进制的转换程序_第1页
格雷码简介及格雷码与二进制的转换程序_第2页
格雷码简介及格雷码与二进制的转换程序_第3页
格雷码简介及格雷码与二进制的转换程序_第4页
格雷码简介及格雷码与二进制的转换程序_第5页
资源描述:

《格雷码简介及格雷码与二进制的转换程序》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、格雷码简介及格雷码与二进制的转换程序一、格雷码简介  格雷码(英文:GrayCode,GreyCode,又称作葛莱码,二进制循环码)是1880年由法国工程师Jean-Maurice-EmlleBaudot发明的一种编码[1],因FrankGray于1953年申请专利“PulseCodeCommunication”得名。当初是为了机械应用,后来在电报上取得了巨大发展[2],现在则常用于模拟-数字转换[3]和转角-数字转换中[4]。  典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、自补特

2、性使得求反非常方便[5]。  格雷码属于可靠性编码,是一种错误最小化的编码,因为它大大地减少了由一个状态到下一个状态时电路中的混淆。由于这种编码相邻的两个码组之间只有一位不同,因而在用于模-数转换中,当模拟量发生微小变化而可能引起数字量发生变化时,格雷码仅改变一位,这样与其它码同时改变两位或多位的情况相比更为可靠,即可减少出错的可能性.这就允许代码电路能以较少的错误在较高的速度下工作。  格雷码在现代科学上获得了广泛的应用,人们还发现智力玩具九连环的状态变化符合格雷码的编码规律,汉诺塔的解法也与格雷码有关。  除了已知的特点,格雷码还有一些鲜为人知的性

3、质。多数数字电子技术和计算机技术的文献认为格雷码是无权码,只有J.F.A.Thompson认为可以从格雷码直接转换成十进制数[6]。如果将格雷码的“权”及格雷码的奇偶性等性质在数学上给予证明,将有助于格雷码研究与应用的发展,有助于自动化技术的发展,还可有助于计算机科学的发展。二、格雷码与二进制的转换程序 *本程序采用递推的方法进行推导,可以转换0~2147483647之间的数(1~31位) *推导方式如下(以三位格雷码为例): *序号格雷码格雷码实值二进制码二进制实值 * 0 000  0  000  0 * 1 001  1  001  1 * 2 

4、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 *    由上面的数据可看出.如果,按照序号01327645的方式遍历格雷码.其编 *码实值是按自然数顺序排列.反之,如果按此顺序遍历其二进制实值.则会发 *现遍历过的数据的个数减一即为二进制码所对应格雷码的实值.再观察序号 *顺序,我们会发现:如果把二进制码分半,前半部分从前向后遍历,后半部分 *从后向前遍历.如果分半部分可再分,则再

5、将其分半.并按照前半部分从前向 *后遍历(分解),后半部分从后向前遍历的方式遍历(分解).直到不可分.即可 *实现按序号所描述顺序遍历二进制码.如果,按此顺序遍历二进制码,我们可 *以很方便地在序列中找到所要的二进制码与其对应的格雷码.本思想可以很 *方便地用递归实现.这样就实现了二进制到格雷码的转换.同样,格雷码到二 *进制的转换,也可以用相同的方法推出.为了加快运算,我们跳过不必要的遍 *历将递归改为递推.这样就实现了格雷码与二进制之间的快速转换. *此算法的时间复杂度约为O(n),n为要转换数据的BIT数. *******************

6、*********************************************** * 补充说明: * 其它的转换方法还有 *   1、查表法(建立一个二进制与格雷码的对应表) *   2、公式法(根据卡诺图建立一个二进制到格雷码的每一位的公式) */ //#definetest#include#ifdeftest #include#endif/** *二进制转换成格雷码 *@paramlStartlValue所在区间下界 *@paramlEndlValue所在区间上界 *@paramlValue要转换的二

7、进制数的实值 *@return返回格雷码对应的二进制数的实值 *@seeg2b()g2b格雷码转换二进制 *@seeBtoG()BtoG二进制转换格雷码 *@seeGtoB()BtoG格雷码转换二进制 *@author黄毅 *@useagea=b2g(0,15,4);//取得4所对应格雷码的二进制值结果a等于6 *@memolValue的值必须在区间[lStart,lEnd]里,否则无法求得所求结果.相应地,如果区间越小,求得结 *      果所用的时间就越少.而且lStart,lEnd的值必须为2的N次方减1.通常lStart为0.为了方便求得 *

8、      其值,建议使用BtoG()函数来进行操作.不过这样会使计算时间加长到原来的120%

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。