




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数字逻辑电路设计及应用C程序设计报告(2)问题:设计一个C程序产生110阶的任意格雷码。思路:在课上学习到了两种格雷码的产生方法:1. 由对应的二进制码转换。其规则是:从最右边一位起,依次将每一位与左边一位异或(XOR),作为对应格雷码该位的值,最左边一位不变(相当于左边是0)。1这种办法并不设用于产生任意阶的格雷码,因为在这个问题中,并没有待转换的普通二进制码。2. 镜像法,其规则是:任意阶都是上一阶格雷码与其镜像构成两个子矩阵,然后再在第一列前一半行加上0,后一半行加上1。而1阶格雷码毫无疑问是0,1,所以整个推导过程类似于数学上的归纳法。这种办法可以产生任意阶的格雷码,其算法思路是,要求规定n(0n11)阶的格雷码,先求1阶的格雷码,再求2阶,依此类推。为了避免建立动态数组的麻烦,可以直接定义一个2*210大小的矩阵(10阶格雷码的大小),在程序一开始就建立,之后只需提取出相应的子矩阵就是所需的格雷码。然而这种办法在计算空间上消耗太大(需要2*210的连续空间),并不是输出格雷码的最好办法。在课上提到,格雷码最重要的一个性质是每一次都与上一个格雷码相比只改变一位。所以,我想到只要定义一个初始格雷码(方便起见全定义为0),然后每次只需要改变其中一位,共改变2n次就可以达到输出n阶格雷码的目的。现在需要做的就是设计一种改变位的规则来使格雷码的产生不重不漏。我在网上搜到如下信息:由於Gray Code相鄰兩數間只改變一個位元,所以可觀察Gray Code從1變0或從0變1時的位置。假設有4位元的Gray Code如下:0000 0001 0011 0010 0110 0111 0101 01001100 1101 1111 1110 1010 1011 1001 1000觀察奇數項的下個數變化時,發現無論是第幾個奇數項Gray Code,下個數永遠只改變最右邊的位元。如果是1就改為0,如果是0就改為1。例如第一項0000變為0001,第三項0011變為0010,第五項0110變為0111,依此類推。觀察偶數項的下個數變化時,發現所改變的位元,是由右邊算來首個1的左邊位元。例如第二項0001下個數變為0011,第四項0010下個變為0110,第六項0111變為0101,依此類推。这样要产生n阶的格雷码,只需建立一个长度为10的数组(10阶格雷码的长度),每次只改变其中一位,共改变2n次即可。相比镜像法,在计算空间和算法设计上都要简单许多。流程:程序:/*/* this is a program to generate a grey code with in 10 orders/* Huang Bohao/* 2013.3.9*/#include #include void GenerateGrey(int grey10, int n); /产生所需阶格雷码的函数void PrintNumberStr(int grey10, int n); /输出指定长度的数组void main() int n,grey10; /需要的格雷码的阶数或二进制码 printf(please enter the order of the grey code you wantn); scanf(%d,&n); GenerateGrey(grey, n);/*/* function name: GenerateGrey/* input parameter: int grey, int n/* output parameter: void*/void GenerateGrey(int grey10, int n) int i,m; m = (int)pow(2, n); for(i = 0; i n; i+ ) greyi = 0; PrintNumberStr(grey, n); for(i = 2; i = 0; j- ) if(greyj = 1)break; greyj-1 = (1-greyj-1); PrintNumberStr(grey,n); /*/* function name: PrintNumberStr/* input parameter: int grey, int n/* output parameter: void*/void PrintNumberStr(int grey10, int n) int k; for(k = 0; k n; k+) printf(%d,greyk); printf(n);运行结果:产生3阶格雷码产生8阶格雷码:后面的太长了打不下了1:来自百度百科: /view/358724.htm2:来自网友caterpillar的个人网
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广东广州医科大学附属第五医院第一次招聘17人考前自测高频考点模拟试题及答案详解(历年真题)
- 2025年新乡延津县选调县外在编在岗教师回乡任教的考前自测高频考点模拟试题及完整答案详解1套
- 2025年甘肃省定西市临洮县中铺镇选聘摩云村文书考前自测高频考点模拟试题有答案详解
- 安全培训教室设备清单表课件
- 2025年光伏发电用控制器项目发展计划
- 2025北京邮电大学与通信工程学院招聘1人(人才派遣)模拟试卷及答案详解1套
- 2025甘肃张掖市教育局培黎职业学院引进高层次人才14人考前自测高频考点模拟试题附答案详解(典型题)
- 2025年中职高考对口升学(理论考试)真题卷【轻工纺织大类】模拟练习
- 2025江苏南京市浦口区卫健委所属事业单位招聘高层次人才11人考前自测高频考点模拟试题及参考答案详解一套
- 小学安保人员安全培训课件
- 精选急腹症影像学表现资料课件
- 大学学生转学(转入)申请表
- 角膜 角膜炎课件
- 《卫生政策学》第三章 政策问题确认
- DL∕T 5440-2020 重覆冰架空输电线路设计技术规程
- 水利水库工程项目划分表及说明书
- 孔明灯(Lantern)3.4使用指南课件
- 雨污水检查井施工方案
- 儿童再生障碍性贫血(课堂PPT)
- 贵州大学本科毕业论文(设计)评分标准及成绩评定表(自然科学类)
- 京丰宾馆路线图
评论
0/150
提交评论