二进制与八进制课程设计说明书.doc_第1页
二进制与八进制课程设计说明书.doc_第2页
二进制与八进制课程设计说明书.doc_第3页
二进制与八进制课程设计说明书.doc_第4页
二进制与八进制课程设计说明书.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录1.设计题目2 2.设计要求23.理论知识231进制记数制232进制转换23.3 ASCII 码34.程序结构54.1二进制转八进制binioct64.2八进制转二进制octbin75.程序清单.76.运行结果276.1主程序清单276.2二进制转换为八进制286.3八进制转换为二进制.287.心得体会291.设计题目二进制数和八进制数相互转换。2.设计要求 本次课程设计着重于理论设计,同时培养动手能力。要求运用自己所学知识进行设计实现,体现自己的知识掌握水平,严禁抄袭(发现后抄袭者和被抄袭者一律不及格)。所作设计需进行论证,一方面是从理论上进行推理验证,另一方面是实验论证。内容包括:设计题目;原始条件及参数;要求完成的主要任务(如:设计方案的选择与确定、设计计算、程序编制、说明书撰写等具体要求);时间安排等。3.理论知识31进位计数制(1)二进制数 ( Binary ) 二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统。(2)八进制数 ( Octal ) 在八进制中,基数为 8 ,它有 0 、 1 、 2 、 3 、 4 、 5 、 6 、 7 八个数字符号,八进制的基本运算规则是“逢八进一”,各数位的权是 8 的幂。 32进制转换 a.二进制数转换成八进制数因为三位二进制数正好表示 0 7 八个数字,所以一个二进制数要转换成八进制数时,以小数点为界分别向左向右开始,每三位分为一组,一组一组地转换成对应的八进制数字。若最后不足三位时,整数部分在最高位前面加 0 补足三位再转换;小数部分在最低位之后加 0 补足三位再转换。然后按原来的顺序排列就得到八进制数了。 八进制与二进制对照表 八进制 0 1 2 3 4 5 6 7 二进制 000 001 010 011 100 101 110 111 b.八进制数转换成二进制数一个八进制数要转换成二进制数时,以小数点为界分别向左向右开始,每一位八进制数字换成对应的三位二进制数即可。3.3 ASCII 码由于计算机只能直接接受、存储和处理二进制数。对于数值信息可以采用二进制数码表示,对于非数值信息可以采用二进制代码编码表示。编码是指用少量基本符号根据一定规则组合起来以表示大量复杂多样的信息。一般所来,需要用二进制代码表示哪些文字、符号取决于我们要求计算机能够“识别”哪些文字、符号。为了能将文字、符号也存储在计算机里,必须将文字、符号按照规定的编码转换成二进制数代码。 目前计算机中用得最广泛的字符集及其编码,是由美国国家标准局(ANSI)制定的ASCII码(American Standard Code for Information Interchange,美国标准信息交换码),它已被国际标准化组织(ISO)定为国际标准,称为ISO 646标准。适用于所有拉丁文字字母,ASCII码有7位码和8位码两种形式。因为1位二进制数可以表示(2=)2种状态:0、1;而2位二进制数可以表示(2=)4种状态:00、01、10、11;依次类推,7位二进制数可以表示(2=)128种状态,每种状态都唯一地编为一个7位的二进制码,对应一个字符(或控制码),这些码可以排列成一个十进制序号0127。所以,7位ASCII码是用七位二进制数进行编码的,可以表示128个字符。 第032号及第127号(共34个)是控制字符或通讯专用字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等;通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等; 第33126号(共94个)是字符,其中第4857号为09十个阿拉伯数字;6590号为26个大写英文字母,97122号为26个小写英文字母,其余为一些标点符号、运算符号等。 4.程序结构4.1二进制转八进制binioct开始BX左移2位把最右面的2位转为ASCII码显示一个字符循环计数值置为2BX循环左移3位把最右面的3位转为ASCII码显示一个字符循环计数值0? 结束NY4.2八进制转二进制octbin开始BX清零输入十进制数判定范围移位数字为3左移3位AH清零添加新二进制位结束跳转输入0重新输入8继续执行5.程序清单 #include#include#includevoid D_B(int);void D_O(int);void D_X(int);void B_D(int);void B_O(int);void B_X(int);void O_B(int);void O_D(int);void O_X(int);void X_B(char r,int k);void X_D(char r,int k);void X_O(char r,int k);void main()int i,j,k=0;int q;char r10;printf(+=+n);printf(| 欢 迎 使 用 进 制 转 换 程 序 |n);printf(+=+n);printf( 注 : 本 版 本 只 做 正 整 数 的 进 制 转 换 ! !);do q=0; /fflush(stdin); printf(n请选择需要被转换的进制:n0、退出n1、二进制n2、八进制n3、十进制n4、十六进制n); scanf(%d,&i); switch (i) case 1: printf(n请选择转换后的进制:n0、退出n1、二进制n2、八进制n3、十进制n4、十六进制n); scanf(%d,&j); switch(j) case 1: printf(n同进制之间不用转化!n); q=1; break; case 2: printf(n请输入您想要转化的数:); scanf(%d,&k); B_O(k); q=1; break; case 3: printf(n请输入您想要转化的数:); scanf(%d,&k); B_D(k); q=1; break; case 4: printf(n请输入您想要转化的数:); scanf(%d,&k); B_X(k); q=1; break; case 0: printf(谢谢使用!); break; case 2: printf(n请选择转换后的进制:n0、退出n1、二进制n2、八进制n3、十进制n4、十六进制n); scanf(%d,&j); switch(j) case 2: printf(n同进制之间不用转化!n); q=1; break; case 1: printf(n请输入您想要转化的数:); scanf(%d,&k); O_B(k); q=1; break; case 3: printf(n请输入您想要转化的数:); scanf(%d,&k); O_D(k); q=1; break; case 4: printf(n请输入您想要转化的数:); scanf(%d,&k); O_X(k); q=1; break; case 0: printf(谢谢使用!); break; case 3: printf(n请选择转换后的进制:n0、退出n1、二进制n2、八进制n3、十进制n4、十六进制n); scanf(%d,&j); switch(j) case 3: printf(n同进制之间不用转化!n); q=1; break; case 1: printf(n请输入您想要转化的数:); scanf(%d,&k); D_B(k); q=1; break; case 2: printf(n请输入您想要转化的数:); scanf(%d,&k); D_O(k); q=1; break; case 4: printf(n请输入您想要转化的数:); scanf(%d,&k); D_X(k); q=1; break; case 0: printf(谢谢使用!); break; case 4: printf(n请选择转换后的进制:n0、退出n1、二进制n2、八进制n3、十进制n4、十六进制n); scanf(%d,&j); switch(j) case 4: printf(n同进制之间不用转化!n); q=1; break; case 1: printf(n请输入您想要转化的数:); fflush(stdin); gets(r); for(k=0;k+) if(rk=0) break; X_B(r,k); q=1; break; case 2: printf(n请输入您想要转化的数:); fflush(stdin); gets(r); for(k=0;k+) if(rk=0) break; X_O(r,k); q=1; break; case 3: printf(n请输入您想要转化的数:); fflush(stdin); gets(r); for(k=0;k+) if(rk=0) break; X_D(r,k); q=1; break; case 0: printf(谢谢使用!); break; case 0: printf(n谢谢使用!n); while(q=1);/以下为: 二进制转换为十进制,八进制,十六进制.void B_D(int a)int i,s=0;int result=0;for(i=1;a!=0;i*=2) if(a%101) s=1; break; else result+=(a%10)*i; a=a/10; if(s=1) printf(您的输入有误!请重新输入n);elseprintf(n转换后的数为:%dn,result);void B_O(int a)int i,j,k,s=0;int p30;int result=0;for(i=1;a!=0;i*=2) if(a%101) s=1; break; else result+=(a%10)*i; a=a/10; for(j=0;result!=0;j+) pj=result%8; result=result/8;if(s=1) printf(您的输入有误!请重新输入n);else printf(n转换后的数为:); for(k=j-1;k=0;k-) printf(%d,pk); printf(n);void B_X(int a)int i,j,k,s=0;char p30;int result=0;for(i=1;a!=0;i*=2) if(a%101) s=1; break; else result+=(a%10)*i; a=a/10; for(j=0;result!=0;j+) pj=result%16; result=result/16; if (pj10) switch(pj) case 10: pj=A; break; case 11: pj=B; break; case 12: pj=C; break; case 13: pj=D; break; case 14: pj=E; break; case 15: pj=F; break; else pj+=48;if(s=1) printf(您的输入有误!请重新输入n);else printf(n转换后的数为:); for(k=j-1;k=0;k-) printf(%c,pk); printf(n);/以下为: 八进制转换为二进制,十进制,十六进制.void O_B(int a)int i,j,k,s=0;int result=0;int p30;for(i=1;a!=0;i*=8)if(a%107) s=1; break; else result+=(a%10)*i; a=a/10; for(j=0;result!=0;j+) pj=result%2; result=result/2;if(s=1) printf(您的输入有误!请重新输入n);else printf(n转换后的数为:); for(k=j-1;k=0;k-) printf(%d,pk); printf(n);void O_D(int a)int i,s=0;int result=0;for(i=1;a!=0;i*=8) if(a%107) s=1; break; else result+=(a%10)*i; a=a/10; if(s=1) printf(您的输入有误!请重新输入n);else printf(n转换后的数为:%dn,result);void O_X(int a)int i,j,k,s=0;char p30;int result=0;for(i=1;a!=0;i*=8) if(a%107) s=1; break; else result+=(a%10)*i; a=a/10; for(j=0;result!=0;j+) pj=result%16; result=result/16; if(pj=0;k-) printf(%c,pk); printf(n);/以下为: 十六进制转换为十进制,二进制,八进制.void X_D(char a,int k)int i,j,s=0;int result=0;int b50;for(i=0;ik;i+) if(ai=1) bi=ai-48; else switch(ai) case A: bi=10; break; case B: bi=11; break; case C: bi=12; break; case D: bi=13; break; case E: bi=14; break; case F: bi=15; break; case a: bi=10; break; case b: bi=11; break; case c: bi=12; break; case d: bi=13; break; case e: bi=14; break; case f: bi=15; break; default: s=1; for(i=1,j=k-1;j=0;j-,i*=16) result+=bj*i;if(s=1) printf(您的输入有误!请重新输入n);else printf(n转换后的数为:%d,result);void X_B(char a,int k)int i,j,s=0;int result=0;int b50;int p30;for(i=0;ik;i+) if(ai=1) bi=ai-48; else switch(ai) case A: bi=10; break; case B: bi=11; break; case C: bi=12; break; case D: bi=13; break; case E: bi=14; break; case F: bi=15; break; case a: bi=10; break; case b: bi=11; break; case c: bi=12; break; case d: bi=13; break; case e: bi=14; break; case f: bi=15; break; default: s=1; for(j=k-1,i=1;j=0;j-,i*=16) result+=bj*i; for(j=0;result!=0;j+) pj=result%2; result=result/2;if(s=1) printf(您的输入有误!请重新输入n);else printf(n转换后的数为:); for(k=j-1;k=0;k-) printf(%d,pk); printf(n);void X_O(char a,int k)int i,j,s=0;int result=0;int b30;int p30;for(i=0;ik;i+) if(ai=1) bi=ai-48; else switch(ai) case A: bi=10; break; case B: bi=11; break; case C: bi=12; break; case D: bi=13; break; case E: bi=14; break; case F: bi=15; break; case a: bi=10; break; case b: bi=11; break; case c: bi=12; break; case d: bi=13; break; case e: bi=14; break; case f: bi=15; break; default: s=1; for(j=k-1,i=1;j=0;j-,i*=16) result+=bj*i; for(j=0;result!=0;j+) pj=result%8; result=result/8;if(s=1) printf(您的输入有误!请重新输入n);else printf(n转换后的数为:); for(k=j-1;k=0;k-) printf(%d,pk); printf(n);/以下为: 十进制转换为二进制,八进制,十六进制.void D_B(int a)int j,k;int p30;for(j=0;a!=0;j+) pj=a%2; a=a/2;printf(n转换后的数为:);for(k=j-1;k=0;k-) printf(%d,pk);printf(n);void D_O(int a)int j,k;int p30;for(j=0;a!=0;j+) pj=a%8; a=a/8;printf(n转换后的数为:);for(k=j-1;k=0;k-) printf(%d,pk);printf(n);void D_X(int

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论