《C数据结构》数制转换实验报告

《C数据结构》数制转换实验报告
《C数据结构》数制转换实验报告

数制转换

实验目的:

使用堆栈的存储结构实现数制转换,如10进制->2进制等

实验思路:

1、写出堆栈的相关操作函数,如:

创建【int InitStack( SqStack *S )】、

压入【int Push(SqStack *S,int e)】、

弹出【int Pop(SqStack *S,int *e)】、

销毁【void DestroyStack(SqStack *S)】、

判断是否为空【int StackEmpty(SqStack *S)】等。

2、堆栈的各操作函数完成后编写功能函数——数制转换【void

changeNumber(int *num,int to)】。

3、数制转换函数之后编写主函数,使用上述函数实现数制转换的功能

核心代码:

1、数制转换函数:

void changeNumber(int *num,int to){

int result[100],yu,e,m,i=0,j=0; //result[]是转换后的结果,yu是取余的结果

SqStack S;

for(m=0;m<100;m++){

result[m]='#';

}

InitStack(&S);

while(*num!=0){

yu=*num%to;

Push(&S,yu);

*num=*num/to;

}

while(!StackEmpty(&S)){

Pop(&S,&e);

result[i]=e;

i++;

}

while(1){

printf("%d",result[j]);

j++;

if(result[j]=='#'){

printf("\n");

break;

}

}

DestroyStack(&S);

}

2、主函数:

int main(){

int *p,num,to;

int ok;

while(1){

printf("您想转换的数字是:");

scanf("%d",&num);

printf("转换成多少进制:");

scanf("%d",&to);

p=#

changeNumber(p,to);

while(1){

printf("继续请按1,退出请按0...");

scanf("%d",&ok);

if(ok!=0 && ok!=1){

printf("抱歉,您的输入有误,");

}else if(ok==0 || ok==1){

break;

}

}

if(ok==0){

break;

}

}

system("pause");

return 1;

}

功能演示:

1、运行执行文件,进入dos窗口后可见提示:“您想转换的数字是:”

2、输入:“1000”,回车后可见提示:“转换成多少进制:”

3、输入:“6”,回车,得到结果:“4344”,又见提示:“继续请按1,退出请按

0...”

4、输入0退出

计算机《数制与编码-进制转换》公开课教案 (2)

课时安排:一课时 教学方法:讲授法 教学目的:1、熟悉数制的概念;2、掌握位权表示法; 3、掌握各数制之间的转换方法。 教学重点:进制、基数、位权的概念 教学难点:二进制—十进制间相互转换 教学过程: 一、师生问好,考勤 二、复习旧识,导入新课 通过学习计算机系统组成,我们已经知道,人与计算机进行信息交换通常使用程序设计语言,程序设计语言经历了三个阶段:机器语言、汇编语言和高级语言。机器语言是机器指令序列,机器指令是一串0和1组成的二进制编码,是唯一能被计算机识别的语言。计算机的语言和我们人类的语言是不一样的。所以当我们对计算机发出一个命令,这些命令必须要经过数字化编码后才能传送、存储和处理。那么要了解计算机是如何将我们发出的信息转换成数字编码之前,我们必须先了解掌握各种数制以及数制的转换。 三、新课讲解 (一)数制 1.进制 按进位的原则进行记数的方法叫做进位记数制。“进位记数制”简称为“数制”或“进制”。我们平时用的最多的就是十进制了,那么,大家想一下,还有没有其他的进制呢?比如,一年12个月,十二进制;古代1斤=16两,逢十六进一,就是十六进制;1公斤=2斤,1时辰=2小时,逢二进一,就是二进制。由此也可以推断出,每一种进制

的进位都遵循一个规则,那就是N进制,逢N进一。这里的N叫做基数。 2.基数 所谓“基数”就是数制中表示数值所需要的数字的总数。十进制中用0—9来表示数值,一共有10个不同的字符;二进制中用0、1来表示数值,一共2个字符;十六进制中0—9、A、B、C、D、E、F,一共有16个不同的字符。为了区别不同的进制数,常在不同进制数字后加一字母表示:十进制D、二进制B、十六进制H。 3.位权 “位权”是指每个数位被赋以一定的权值。位权是基数的若干次幂。采用进位计数制进行计数,表示数值大小的数码与它在数中所处的位置有关。 (二)使用二进制的原因 计算机内部一律采用二进制表示数据信息,而大家常用的则是十进制,有时为了方便还使用八进制或十六进制。采用二进制的原因: ①二进制码在物理上最容易实现。计算机由逻辑电路组成的,逻辑电路通常只有两个状态。例如,电压的高与低、脉冲的有与无、开关的接通与断开等。这两种状态正好用来表示二进制数码“1”和“0”。若是采用十进制,则需表示十个数码,这是困难的。 ②运算简单。③逻辑性强。 (三)数制转换 在计算机进行数据处理时首先把输入的十进制数转换成计算机所能接受的二进制数;计算机运行结束后,再把二进制数转换成人们所习惯的十进制数输出。这种将数由一种数制转换成另一种数制称为数制间的转换。

三种不同方法解决数制转换问题

/////////////////方法一 #include #define S 10 void zh(int N,int r) { int L[S],top; int x; top=-1; while(N) { L[++top]=N%r; N=N/r; while(top!=-1) { x=L[top--]; printf("%d",x); } } printf("\n"); } main() { int w,z; scanf("%d%d",&w,&z); zh(w,z); } ///////////////////////////方法二 #include #include #define maxsize 50 void conversion(int n,int r) { int ss[maxsize]={0}; int i=0; int j; while(n) { ss[i]=(n%r); i++; n=n/r; } for(j=0;j

}//数制转换 void main() { int n=37; int r=4; printf("十进制数%2d转换为%d进制数。\n",n,r); conversion(n,r); } /////////////////方法三 #include #include #define maxsize 5 typedef struct { int data[maxsize]; int top; }seqstack; void init_seqstack(seqstack *s) { s->top=-1; }//栈的初始化 int empty_seqstack(seqstack *s) { if(s->top==-1) return 1; else return 0; }//空栈的判断 int push_seqstack(seqstack *s,int x) { if(s->top==maxsize-1) return 0; else { (s)->data[++(s)->top]=x; return (1); } }//进栈 int pop_seqstack(seqstack *s,int *x)

各种进制之间转换方法

各进制转换方法(转载) 一、计算机中数的表示: 首先,要搞清楚下面3个概念 ?数码:表示数的符号 ?基:数码的个数 ?权:每一位所具有的值 请看例子: 数制十进制二进制八进制十六进制 数码0~9 0~1 0~7 0~15 基10 2 8 16 权10o,101,102,…2o,21,22,…8o,81,82,…16o,161,162,…特点逢十进一逢二进一逢八进一逢十六进一 十进制4956= 4*103+9*102 +5*101+6*10o 二进制1011=1*23+0*22 +1*21+1*2o 八进制4275=4*83+2*82 +7*81+5*8o 十六进制81AE=8*163+1*162 +10*161+14*16o

二、各种进制的转换问题 1.二、八、十六进制转换成十进制 2.十进制转换成二、八、十六进制 3.二进制、八进制的互相转换 4.二进制、十六进制的互相转换 1、二、八、十六进制转换成十进制 方法:数码乘以相应权之和 2、十进制转换成二、八、十六进制 方法:连续除以基,直至商为0,从低到高记录余数

3、二进制、八进制的互相转换 方法: ?二进制转换成八进制:从右向左,每3位一组(不足3位左补0),转换成八进制 ?八进制转换成二进制:用3位二进制数代替每一位八进制数 例(1101001)2=(001,101,001)2=(151)8 例 (246)8=(010,100,110)2=(10100110)2 4、二进制、十六进制的互相转换 方法: ?二进制转换成十六进制:从右向左,每4位一组(不足4位左补0),转换成十六进制 ?十六进制转换成二进制:用4位二进制数代替每一位十六进制数 例(11010101111101)2=(0011,0101,0111,1101)2=(357D)16 例 (4B9E)16=(0100,1011,1001,1110)2=(100101110011110)2 三、各种进制数的运算

计算机数制与编码进制转换公开课教案

计算机数制与编码进制转换公开课教案 Document serial number【KKGB-LBS98YT-BS8CB-BSUT-BST108】

课时安排:一课时教学方法:讲授法 教学目的:1、熟悉数制的概念;2、掌握位权表示法; 3、掌握各数制之间的转换方法。 教学重点:进制、基数、位权的概念 教学难点:二进制—十进制间相互转换 教学过程: 一、师生问好,考勤 二、复习旧识,导入新课 通过学习计算机系统组成,我们已经知道,人与计算机进行信息交换通常使用程序设计语言,程序设计语言经历了三个阶段:机器语言、汇编语言和高级语言。机器语言是机器指令序列,机器指令是一串0和1组成的二进制编码,是唯一能被计算机识别的语言。计算机的语言和我们人类的语言是不一样的。所以当我们对计算机发出一个命令,这些命令必须要经过数字化编码后才能传送、存储和处理。那么要了解计算机是如何将我们发出的信息转换成数字编码之前,我们必须先了解掌握各种数制以及数制的转换。 三、新课讲解 (一)数制 1.进制 按进位的原则进行记数的方法叫做进位记数制。“进位记数制”简称为“数制”或“进制”。我们平时用的最多的就是十进制了,那么,大家想一下,还有没有其他的进制呢?比如,一年12个月,十二进制;古代1斤=16两,逢十六进一,就是十六进制;1公

斤=2斤,1时辰=2小时,逢二进一,就是二进制。由此也可以推断出,每一种进制的进位都遵循一个规则,那就是N进制,逢N进一。这里的N叫做基数。 2.基数 所谓“基数”就是数制中表示数值所需要的数字的总数。十进制中用0—9来表示数值,一共有10个不同的字符;二进制中用 0、1来表示数值,一共2个字符;十六进制中0—9、A、B、C、D、 E、F,一共有16个不同的字符。为了区别不同的进制数,常在不同进制数字后加一字母表示:十进制D、二进制B、十六进制H。 3.位权 “位权”是指每个数位被赋以一定的权值。位权是基数的若干次幂。采用进位计数制进行计数,表示数值大小的数码与它在数中所处的位置有关。 (二)使用二进制的原因 计算机内部一律采用二进制表示数据信息,而大家常用的则是十进制,有时为了方便还使用八进制或十六进制。采用二进制的原因: ①二进制码在物理上最容易实现。计算机由逻辑电路组成的,逻辑电路通常只有两个状态。例如,电压的高与低、脉冲的有与无、开关的接通与断开等。这两种状态正好用来表示二进制数码“1”和“0”。若是采用十进制,则需表示十个数码,这是困难的。 ②运算简单。③逻辑性强。 (三)数制转换 在计算机进行数据处理时首先把输入的十进制数转换成计算机所能接受的二进制数;计算机运行结束后,再把二进制数转换成人

计算机《数制与编码进制转换》公开课教案

数制与编码——进制转换【学情分析】本课内容是在学生已经学习了计算机发展与应用、计算机系统的组成等知识的基础上进行,已经初步知道了人与计算机进行信息交换通常使用程序设计语言,程序设计语言经历了三个阶段:机器语言、汇编语言和高级语言。机器语言是机器指令序列,是一串0和1组成的二进制编码,是唯一能被计算机识别的语言。那么要了解计算机是如何将我们发出的信息转换成数字编码之前,我们必须先了解掌握各种数制及相互间的转换。这节课内容较多,学生理解起来比较困难,根据课堂需要和学生特点,既要让学生有信心、热情地学习新知识,又要让他们主动积极地参与到整个教学活动中来。 【课时安排】2课时 【授课形式】讲授、多媒体教学 【教学方法】讲授法、练习法、问答法、演示法 【教学用具】计算机、黑板、多媒体、课件 【教学目标】 知识目标:1、了解数制、基、基数及位权的概念; 2、掌握二进制、十进制、八进制、十六进制的表示方法; 3、掌握二进制与十进制间相互转换的方法。 技能目标:1、培养学生逻辑运算能力; 2、培养学生分析问题、解决问题的能力; 3、培养学生独立思考问题的能力。 情感目标:通过数制转换的学习培养学生的计算机科学涵养,同时,让学生体会到认真的学习态度,严谨细致的学习习惯。 【教学重点】1、进制、基数、位权的概念。2、二进制与十进制间相互转换方法。【教学难点】二进制与十进制间相互转换 【教学过程】 一、师生问好,考勤 二、复习旧识,导入新课 (以下教师的语言、活动简称“师”,学生的活动简称“生”)

课前引入: 师:我想请大家做一道算术题:110+110=? (学生几乎都回答等于220)。 师:那么220这个答案对还是不对呢?可以说对,也可以说不对。在学习本课之前,回答220是正确的,但是,在我们学完今天的知识后,答案就不一是220了。为什么呢? (设疑,学生思考,教师点名个别学生回答) 师:谈到数字,有很多同学可能会觉的很可笑,这不就是1234……是的,在生活中,我们用的一般都是十进制。那么大家想一下,我们的生活中,还用到了哪些别的进制? (学生思考回答:十二进制、60进制等) 师:我们的一年有12个月,这是十二进制。一小时等于60分,一分等于60秒,我们的时间是60进制。当然,还有一些,比如一米等于三尺,三进制。比如我们的鞋子或袜子,两只为一双,这是二进制。可是我们通过前面的课程已经知道计算机唯一能识别是二进制数,这正是我们本节课所学习的重点。(本节课我们将了解数制、基、基数及位权的概念;掌握二进制、十进制、八进制、十六进制的表示方法;掌握二进制与十进制间相互转换的方法。) 三、新课讲解 (一)主要概念 1.数制 师:在我们小学阶段最开始学习的就是十以内的加法,之后是两位数的加法,在两位数加法的学习中,老师是不是经常会说,要注意逢十进一?也就是我们平常说的别忘了进位。像这样按进位的原则进行记数的方法叫做进位记数制。简称为“数制”或“进制”。我们平时用的最多的就是十进制了,那么,大家想一下,还有没有其他的进制呢?比如,一周七天,七进制;一年12个月,十二进制;一小时六十分钟,六十进制;1公斤=2斤,1时辰=2小时,逢二进一,就是二进制。除此以外在计算机语言中常用八进制和十六进制。由此也可以推断出:每一种进制的进位都遵循一个规则,那就是N进制,逢N进一。 2.基与基数

数据结构课程设计数制转换

目录 1前言 (1) 1.1设计背景和意义 (1) 1.1.1数据结构简介 (2) 1.1.2选择算法的原因 (2) 1.2设计的原理和内容 (2) 2正文 (2) 2.1 设计的目的和意义 (2) 2.2 目标和总体方案 (2) 2.3 设计方法和内容 (3) 2.3.1模块划分 (3) 2.3.2主要程序模块 (3) 2.4 程序的设计思想和内容 (6) 2.4.1用数组实现该问题 (6) 2.4.2用栈实现该问题 (6) 2.5 设计创新和关键技术 (6) 2.6 程序调试 (6) 2.7程序流程图 (7) 2.8结论 (8) 参考文献 (9) 附录 (9)

1前言 1.1设计背景和意义 1.1.1数据结构简介 数据结构是计算机程序设计的重要理论设计基础,是一门综合性的专业基础科。数据结构是研究数据之间的相互关系,也即数据的组织形式的一门科学。它不仅是计算机学科的核心课程,数据结构是计算机存储、组织数据的方式。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率的算法。在计算机科学中,“数据结构”不仅是一般程序设计的基础,而且是设计和实现编译程序、操作系统、数据库系统及其他系统程序和大型应用程序的重要基础。 1.1.2选择算法的原因 在许多类型的程序的设计中,数据结构的选择是一个基本的设计考虑因素。许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。许多时候,确定了数据结构后,算法就容易得到了。有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。不论哪种情况,选择合适的数据结构都是非常重要的。 1.2设计的原理和内容 设计了一个10进制转换其它进制(36进制以内)及逆转换的软件,该软件具有简单的将10进制数转换成2、8、16进制数以及较复杂的高进制数的转换和逆转功能。本软件采用C 语言编写以VC++作为软件开发环境,采用顺序栈存储方式来存储运算中的数位,借助栈后进先出的特点,易于结果输出。操作简单,界面清晰,易于为用户所接受。 2正文 2.1 设计的目的和意义 我们是计算机科学与技术专业的本科生,《数据结构》是我们重要的必修课程。当代社会学要大学培养出理论扎实,动手实践能力强的大学生。所以,本次课程设计的目的就在于通过一次实践性的活动加深对这门课程的理解,使我们在感性的认识上进一步升华为理性的认识。为后继课程的学习打下坚实的基础。通过本次数据结构课程设计,我们基本上掌握了课程设计流程,还掌握了一些知识和技能,这对于我们以后对于数据结构的学习有了很大的帮助和提高,加深了我们对数据结构的理解,,为今后的学习打下了坚实的基础。同时也提高了我们对于编程这方面的能力。 2.2 目标和总体方案 本次设计的目标在于设计出一个能够实现数制转换的程序,于是特制订了一个总体的方案:

数制转换

家庭作业:进制转换 一、填空 1. (1011011)2=( )10=()16=()8 2. (110111101)2=( )10=()16=()8 3. (11001.11)2=( )10=()16=()8 4. (1010001.101)2=( )10=()16=()8 5. (205 )16=( )10=()2==()8 6. ( 127 )10=()16=()2==()8 7. ( 215.75 )10=()16=()2==()8二、单选 1. 下列有关 " 基数 " 表述正确的是__________ A. 基数是指某一数字符号在数的不同位置所表示的值的大小 B. 二进制的基数是 " 二”,十进制的基数是 " 十 " C. 基数就是一个数的数值 D. 只有正数才有基数 2. 下列数中 , 最大的数是__________ A.(00101011)2 B.(052)8 C.(44 ) 10 D.(2A)16 3. 下列数中 , 最小的数是_______ A.(213)4 B.(132)5 C.(123)6 D.(101)7 4. 下列关于 "lkB" 准确的含义是__ _______ A.1000 个二进制位 B.1000 个字节 C.1024 个二进制位 D.1024 个字节 5. 最大的10位无符号二进制整数转换成八进制数是______。 A.1023 B.1777 C.1000 D.1024 6.下列不同进位制的四个数中,最小的数是________。 A.二进制数1100010 B.十进制数65 C.八进制数77 D.十六进制数45

7. 十进制数92转换为二进制数和十六进制数分别是________。 A. 01011100和5C B. 01101100和6l C. 10101011和5D D. 01011000和4F 8. 在计算机中,8位的二进制数可表示的最大无符号十进制数是______。 A. 128 B. 255 C. 127 D. 256 9. 将十进制数89.625转换成二进制数表示,其结果是________。 A. 1011001.101 B. 1011011.101 C. 1011001.011 D. 1010011.100 10. 以下选项中,其中相等的一组数是_______。 A. 十进制数54020与八进制数54732 B. 八进制数13657与二进制数1011110101111 C. 十六进制数F429与二进制数1011010000101001 D. 八进制数7324与十六进制数B93 11. 十进制数241转换成8位二进制数是_______. A.10111111 B.11110001 C.11111001 D.10110001

数制之间的转换教案

数制之间的转换 教学目标:掌握二、八、十、十六进制数之间的相互转换 教学重点:二、十、十六进制数之间的相互转换 教学难点:将十进制数分别转化为二、八、十六进制数 教学方法:讲练结合 教具:黑板、粉笔 教学过程: 一、复习导入 (1)基数 数制所使用的基本数码的个数。 十进制数的基数为10 二进制数的基数为2 八进制数的基数为8 十六进制数的基数为16 (2)权 每位数码“1”所代表的实际数值。 权的大小是以基数为底,以数位的序号为指数的整数次幂。 (3)按权展开式 每位数码乘以每位权之和 305.56的按权展开式: 3×102+0×101+5×100+5×10-1+6×10-2 101.01B 的按权展开式: 1×22+0×21+1×20+0×2-1+1×2-2 二、新授知识 (1)在程序设计中,为了区分不同进制数,常在数字后加一英文字母做后缀以示区别。 十进制数:在数字后加字母D 或不加字母,如105D 或105。 二进制数:在数字后面加字母B ,如101B 。 八进制数:在数字后面加字母Q ,如163Q 。 十六进制数:在数字后加字母H ,如16EH 。 305.56 102 101 100 10-1 10-2 101.01B 22 21 20 2-1 2-2

(2)将二、八、十六进制数转换为十进制数的方法: 计算按权展开式 例1. 将二进制数101.01转化为十进制数。 解:101.01B=1×22+0×21+1×20+0×2-1+1×2-2 =5.25 例2. 将八进制数32转换为十进制数。 解:32Q=3×81+2×80=26 (3)将十进制数转换为二、八、十六进制数的方法 整数部分,除以基数,取余,逆序排列; 小数部分,乘以基数,取整,顺序排列。 例3. 将十进制数26.25转换为二进制数。 ∴26=11010B ∴ 0.25=0.01B ∴ 26.25=11010.01B 例4.将十进制数26.25转化为八进制数。 解: ∴ ∴ 0.25=0.2Q ∴26.25=32.2Q 课堂练习: 将十进制数26.25转换成十六进制数 答案: ∴26=1AH ∴0.25=0.4H 26 2 余数 13 0 2 6 1 2 3 0 2 1 1 1 0 2 0.25 2 0.5 整数 0 × × 2 1.0 1 0.0 26 8 3 2 8 0 3 0.25 × 8 2.00 2 0.00 26 16 1 10=AH 0 1 0.25 × 16 4.00 4 0.00

数制转换数据结构课程设计报告

《数据结构》 课程设计报告书 题目:数制转换 系别:计算机科学与应用系学号: 学生姓名: 指导教师: 完成日期:2013—6—1

数制转换 1.需求分析 任意给定一个M进制的数x ,实现如下要求 1)求出此数x的10进制值(用MD表示) 2)实现对x向任意的一个非M进制的数的转换。 3)至少用两种或两种以上的方法实现上述要求(用栈解决,用数组解决,其它方法解决)。 2.概要设计 程序流程可以用以下流程图来刻画: A用数组实现 B用栈实现 3.详细设计 A.用数组实现该问题 D2M()函数和M2D()函数是实现该问题的主要函数。D2M()函数是实现十进制转换为其他进制的函数,它是将输入的十进制数x首先对需要转换的进制M取余,然后在对其取整,接着通过递归调用D2M()函数一次将得到的整数部分一次先取余后取整,并将所得的余数依次存入下一数组,然后逆向去除数组中的元素,即得到转换后的结果。而M2D()函数是实现其他进制M转换为十进制,并将其转换为非M进制。M进制转十进制则是从该M 进制数的

最后一位开始运算,依次列为第0、1、2、……..N位并分别乘以M的0、1、2、…..N次方,将得到的次方相加便得到对应的十进制数,再调用D2M()函数将其转换为非M进制的数。 B.用栈实现 栈具有后进先出的性质,具体实现方法和数组的方法有很大联系,不再过多解释。 4.调试分析 (1)构造栈的方法通过查阅书籍知道了。 (2)数组的递归调用查阅相关书籍了解了。 (3)为了让界面表达更清晰,多次调试完善了界面。 5.测试结果 下面是我的测试函数及运行结果: A.数组测试结果

二进制与十进制的转换(教案)

二进制与十进制的转换教案 【教学目的与要求】 1、熟悉数制的概念; 2、掌握位权表示法; 3、熟练掌握二进制与十进制之间的转换方法。 【课时安排】1课时。 【教学重点与难点】 1、难点:位权表示法十进制转化为二进制 2、重点:二、十进制间相互转换 【教学过程】(以下教师的语言、活动简称“师”,学生的活动简称“生”) (一)新课导入 生:加减乘除 师:对,我们最开始学习的就是十以内的加法,之后是两位数的加法,在两位数加法的学习中,老师是不是经常会说,要注意逢十进一?也就是我们平常说的别忘了进位。 (PPT展示)像这样按进位的原则进行记数的方法叫做进位记数制。“进位记数制”简称为“数制”或“进制”。我们平时用的最多的就是十进制了 那么,大家再想一下,还有没有其他的进制呢?比如:小时、分钟、秒之间是怎么换算的?生:1小时=60分钟1分钟=60秒 师:那我们平时会不会说我做这件事用了90分钟呢?不是吧,我们一般会说,用了一个半小时,也就是说:逢60进一,这就是60进制。 (PPT展示)由此可以推断出:每一种数制的进位都遵循一个规则,那就是——逢N进1。这里的N叫做基数。所谓“基数”就是数制中表示数值所需要的数字字符的总数,比如,十进制中用0——9来表示数值,一共有10个不同的字符,那么,10就是十进制的基数,表示逢十进一。 师:下面我们再引入一个新概念——“位权”,什么是位权呢?(PPT展示)大家看一一这个十进制数:1111.111,这7个1是不是完全一样的呢?有什么不同呢?第一个1表示1000,第二个1表示100,……

那么,这个“若干次”是多少呢?有没有什么规定呢?大家观察一下这个例子,以小数点为界,整数部分自右向左,依次是基数的0次、1次、2次、3次幂。小数部分,自左向右,分别是基数的-1次、-2次、-3次幂。 大家再看一下:2856.42这个十进制数,它的值是怎么算出来的呢? 这就叫做按权相加法。也就是让每一位上的数字字符乘以它所代表的权。那么,这种方法有什么用呢?这就是本节课的重点内容。 (二)数制转换 大家都知道,计算机运算时采用的是二进制,但人们在使用计算机解决实际问题时通常使用十进制,这就有一个十进制向二进制转换或由二进制向十进制转换的过程。 也就是说,在使用计算机进行数据处理时首先必须把输入的十进制数转换成计算机所能接受的二进制数;计算机在运行结束后,再把二进制数转换为人们所习惯的十进制数输出。这种将数由一种数制转换成另一种数制称为数制间的转换。 二进制的特点:只有二个不同的数字符号:0和1;逢二进1 1)二进制转十进制

数据结构+数制转换实验报告

数据结构实验报告题目:数制转换 班级:*** 姓名:*** 学号:200707041 指导教师:** 完成日期:2009 年 4 月18 日

一、需求分析 1、程序所实现的功能; 程序通过对栈的应用,实现了将一个十进制整数向R进制数的转换。 2、程序的输入,包含输入的数据格式和说明; 程序运行时,输入任意十进制整数。对于转换进制R的值则应为:10、2、 8、16。 3、程序的输出,程序输出的形式; 输出为转换成的R进制整数。 二、设计内容 1、说明本程序中所有用到的数据及其数据结构的定义及其基本操作的定义; 1)定义栈的顺序存储结构 typedef struct { int *base; int *top; int stacksize; }SqStack;//栈的顺序存储表示 2)栈的初始化int InitStack(SqStack &S) 3)判断一个栈是否为空int StackEmpty(SqStack &S)

4)入栈操作int Push(SqStack &S,int e) 5)出栈操作int Pop(SqStack &S,int &e) 6)数制转换函数void conversion(SqStack &S,int R,int N,int &e) 7)判断是否输入正确int Ninputlegality() int Rinputlegality() 8)主函数void main() 2、给出注释详细的源程序,及其设计思想的描述; #include #include #include #define STACK_INIT_SIZE 1000 #define STACKINCREMENT 10 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define OVERFLOW 0 typedef struct { int *base;

进制之间的转换

--进制之间的转换-- 介绍:进制也就是进位计数制,是人为定义的带进位的计数方法(有不带进位的计数方法,比如原始的结绳计数法,唱票时常用的“正”字计数法,以及类似的tally mark计数)。对于任何一种进制---X进制,就表示每一位置上的数运算时都是逢X进一位。十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。 --常见的几种进制 二进制(B)十进制(D)十六进制(H)八进制(O) 1.二进制 二进制有两个特点:它由两个数码0、1组成,二进制的规律是逢二进一。 -转换。 a.将二进制转换为十进制。 例子:将二进制数10111.1011转换为十进制 解析: 小数点前 1 0 1 1 ------ 转换为十进制 1×23 0×22 1×21 1×20 ------ 8+0+2+1=11 小数点后1 0 1 1 ------ 转换为十进制 1×2-1 0×2-21×2-31×2-4 ---- 0.5+0+0.125+0.0625=0.6875 则,二进制1011.1011转换为十进制数为 11+0.6875=11.6875. (1011.1011) B =(11.6875) D b.将二进制转换为八进制。 例子:将二进制数10111.1011转换为八进制 解析: (由小数点开始,向两边每3个分为一组) 001 011 .101 100 (按照二进制转十进制的算法,算出每三个所对应的十进制数) 1 3 . 5 4 则,(1011.1011) B =(13.54) O c.将二进制转换为十六进制。 例子:将二进制数10111.1011转换为八进制解析:

数据结构课程设计 数制转换 数组和栈

中北大学 数据结构与算法课程设计 说明书 学院、系:软件学院 专业:软件工程 学生姓名:xxx 学号:xxxx 设计题目:数制转换问题 起迄日期: 2013年12月9日- 2013年12月20日指导教师:xxx 2013 年12月 20 日

1、需求分析 任意给定一个M进制的数x ,请实现如下要求 1) 求出此数x的10进制值(用MD表示) 2) 实现对x向任意的一个非M进制的数的转换。 3) 用两种方法实现上述要求(用栈解决和用数组解决)。 2、概要设计 流程图 数组的流程图:

栈的流程图:

算法思想 1、用数组实现该问题: DtoM()函数和MtoD()函数是实现该问题的主要函数。DtoM()函数是实现十进制转换为其它进制的函数,它是将输入的十进制数x取首先对需要转换的进制M取余,然后再对其取整,接着通过递归调用DtoM()函数依次将得到的整数部分依次先取余后取整,并将所得的余数依次存入一个数组中,然后逆向取出数组中的元素,即得到转换后的结果。而MtoD()函数则是实现其他进制M转换为十进制,并将其转换为非M进制的数。M进制转十进制则是从该M进制数的最后一位开始算,依次列为第0、1、2…n位并分别乘以M的0、1、2…n次方,将得到的次方相加便得到对应的十进制数,再调用DtoM()函数将其转换为非M进制的数。 2、用栈实现该问题: 同样是利用DtoM()和MtoD()两个函数实现。两个函数的思想同利用数组实现时相同。只是栈具有后进先出的性质,故其用Pop()取数较数组的逆向取数方便些。 模块划分 1、用数组实现该问题: ⑴i,j,y,n,s,m,r,reminder,x是定义的全局变量,初始值都为0; ⑵DtoM(int g,int h)是实现十进制数转换为M进制数的函数; ⑶MtoD()是实现M(仅指二进制数和八进制数)进制数转换为十进制数的函数,并 在其中调用D2M(int g,int h)实现向非M进制数的转换; ⑷HtoD(int f)是实现十六进制数转换为十进制数的函数,并在其中调用D2M(int g,int h)实现向非十六进制数的转换; ⑸void main()是主函数,功能是给出测试的数据,并在特定条件下调用D2M()

《数制转换》教案

《数制转换及计算机中数的表示》教案 教学目标: 【知识目标】 1、理解进制的含义。 2、掌握二进制、十进制、八进制、十六进制数的表示方法。 3、掌握二进制、八进制、十六进制数转换为十进制的方法。 4、掌握十进制整数、小数转换为二进制数的方法。 5、掌握计算机中数的表示 【技能目标】 1、培养学生逻辑运算能力。 2、培养学生分析问题、解决问题的能力。 3、培养学生独立思考问题的能力。 4、培养学生自主使用网络软件的能力。 【情感目标】 通过练习数制转换,让学生体验成功,提高学生自信心。 教学重点: 1、各进制数的表示方法。 2、各进制数间相互转换的方法。 3、计算机中数的表示 教学难点: 十进制整数、小数转换为二进制数的方法;计算机中数的表示。 学法指导: 教师讲授、学生练习、教师总结、教师评价。 教学基础: 学生基础: 学生只学习了“计算机基础”一章的“计算机产生和发展”一节。 设备基础: 硬件:多媒体网络机房;教师机一台;学生机每人一台;大屏幕投影;教师机与学生机之间互相联网。 教学过程: 一、新课导入 我们日常生活中使用的数是十进制、十进制不是唯一的数的表示方法,表示数的数制还有哪些呢?这些数制与十进制间有什么关系呢?这节课我们就来学习数制。 二、新课讲解

第一部分数制及其转换 1、数制 数制的表示方法:为了区别不同进制数,一般把具体数用括号括起来,在括号的右下角标上相应表示数制的数字。 举例:(101) 2与(101) 10 基数:所使用的不同基本符号的个数。 权:是其基数的位序次幂。 ①十进制、二进制、十六进制、八进制的概念 (1)十进制(D):由0~9组成;权:10i;计数时按逢十进一的规则进行;用(345.59)10 或345.59D表示。 (2)二进制(B):由0、1组成;权:2i;计数时按逢二进一的规则进行;用(101.11)2 或101.11B表示。 (3)十六进制(H):由0~9、A~F组成;权:16i;计数时按逢十六进一的规 则进行;用(IA.C) 16 或IA.CH表示。 (4)八进制(Q):由0~7组成;权:8i;计数时按逢八进一的规则进行;用(34.6)8 或34.6Q表示。 总结:不同数制的表示方法有两种,一种是加括号及数字下标,另一种是数字后加相应的大写字母D、B、H、Q。 ②按权展开基本公式: 设一个基数为R的数值N,N=(d n-1d n-2 …d 1 d d -1 …d -m ),则N的展开为:N=d n-1 ×R n-1 +d n-2×R n-2+…+d 1 ×R1+d ×R0+d -1 ×R-1+…+d -m ×R-m。 说明:(d n-1 d n-2 …d 1 d d -1 …d -m )表示各位上的数字,R i为权。 例如:十进制数2345.67展开式为:2345.67=2×103+3×102+4×101+5×100+6 ×10-1+7×10-2 2、n进制转换为十进制的方法 n进制转换为十进制的方法:按权展开法(将n进制数按权展开相加即可得到相应的十进制数)。以二进制为例: 例如,将二进制数(1011.011) 2 转换成十进制数的方法为: (1011.011) 2=1×23+0×22+1×21+1×20+0×2-1+1×2-2+1×2-3=(11.375) 10

数制转换问题(完整)

数据结构课程设计 题目名称:数制转换问题 课程名称:数据结构 学生姓名: 学号: 学院名称: 指导教师:

目录 一.需求分析………………………………………………………二.概要设计………………………………………………………三.详细设计………………………………………………………四.调试测试………………………………………………………五.总结……………………………………………………………

一.需求分析 应用环境设定:生活中我们需要将M进制的数转换为我们所需要 的进制,从键盘任意输入一个M进制的数,对其 进行转换成其他三种进制的数,然后再从电脑中 显示出来,最终得到我们的结果。 用户界面:命令行界面,根据自己的要求,对界面的提示进行操作,正确输入我们需要的数据。 输入方式:首先输入将转换的进制数,回车确认;然后输入确定的数据,回车确认;接着选择要转换为的进制数,回车确 认。 输出方式:界面直接输出,启动程序后,按照界面提示,输入数据,直接回车确认,显示屏即输出我们的数据结果。 数据储存方式:全部在内存存放,不使用硬盘上的文件或其他数据 源,程序执行过程中和结束后不保存数据。 程序功能:1.根据界面提示输入M进制数据。 2.对任意M进制数据实行非M进制的转换。 二.概要设计 在此说明数据结构设计和关键的算法设计思想 1.用数组实现该问题 D2M()函数和M2D()函数是实现该问题的主要函数。D2M()函数是实现十进制转换为其它进制的函数,它是将输入的十进制数x取首先对需要转换的进制M取余,然后再对其取整,接着通过递归调用D2M()函数依次将得到的整数部分依次先取余后取整,并将所得的余

不同数制间的转换

注意:一个十进制小数不一定能完全准确地转换成二进制小数,这时可以根据精度要求只转换到小数点后某一位为止即可。将其整数部分和小数部分分别转换,然后组合起来的得(35.25)[10]=(100011.01)[2]

二进制加法: 1011+1000=10011 1011+1001=10100 二进制数加法,逢2进1. 即0+0=0,1+0=1,1+1=2,逢2向前位进1,=10 二进制数中,只有1和0. 二进制数的减法 例如:00011110 -00010101 —————— 00001001 即:30-21=9 可当:100 -101 ———— 1111 怎么会这样呢?

是的,正常的,如果用四位的10进制数,那么0001-0002的结果也会是9999。 注意看你的二进制100-101,结果其实始终前面有借位。 二进制乘法运算 一、定点数移位乘法 1、定点原码一位乘法 设X=Xf.X1X2…Xn、Y= Yf.Y1Y2…Yn,乘积为P,乘积的符号为Pf,则求P的规则: 1) 被乘数和乘数均取绝对值参加运算,符号位单独考虑。 2) 被乘数取双符号,部分积的长度同被乘数,初始值0。 3) 从乘数的最低位Yn开始判断,若Yn=1,则部分积加上被乘数,然后右移1位;若Yn=0,则部分积加 上0,然后右移1位。 4) 重复3),判断n次。 举例3.3.1:设X=0.1101 Y=0.1011,求[X]原 [Y]原 2、定点补码一位乘法:又称作Booth算法 运算规则: 1) 符号位参与运算,运算的数均以补码表示。 2) 被乘数一般取双符号位,参加运算,部分积初始值为0。 3) 乘数可取单符号位,以决定最后一步是否需要校正,即是否加[-X]补。 4) 乘数末尾增设附加位Yn+1,且初值为0。 5) 按下表进行操作 部分积右移1位 1 1 部分积加(-X)补,右移1位 1

任意进制转换(数据结构c语言版)

以下是在vc++6.0下运行的结果,我列举了输入345,进制分别为2,8,16的得出的结果,下面的不止只有这三个,输入任意进制的都可以 输入一个整数和进制数:345,2 转换成进制之后的数:101011001 Press any key to continue 输入一个整数和进制数:345,2 转换成进制之后的数:101011001 Press any key to continue 输入一个整数和进制数:345,16 转换成进制之后的数:159 Press any key to continue 程序如下: #include #include #define TRUE 1 #define FALSE 0 #define Stack_Size 100 typedef int StackElementType; typedef struct { StackElementType elem[Stack_Size]; int top; }SeqStack; void InitStack(SeqStack *S) { S->top=-1; }

int Push(SeqStack *S,StackElementType x) { if(S->top==Stack_Size-1) return(FALSE); S->top++; S->elem[S->top]=x; return(TRUE); } int Pop(SeqStack *S,StackElementType *x) { if(S->top==-1) return(FALSE); else { *x=S->elem[S->top]; S->top--; return(TRUE); } } int GetTop(SeqStack *S,StackElementType *x) { if(S->top==-1) return(FALSE); else { *x=S->elem[S->top]; return(TRUE); } } void main() { int m,n,x; char ch; SeqStack S; InitStack (&S);

计算机《数制与编码-进制转换》公开课教案

数制与编码——进制转换 【学情分析】本课内容是在学生已经学习了计算机发展与应用、计算机系统的组成等知识的基础上进行,已经初步知道了人与计算机进行信息交换通常使用程序设计语言,程序设计语言经历了三个阶段:机器语言、汇编语言和高级语言。机器语言是机器指令序列,是一串0和1组成的二进制编码,是唯一能被计算机识别的语言。那么要了解计算机是如何将我们发出的信息转换成数字编码之前,我们必须先了解掌握各种数制及相互间的转换。这节课内容较多,学生理解起来比较困难,根据课堂需要和学生特点,既要让学生有信心、热情地学习新知识,又要让他们主动积极地参与到整个教学活动中来。 【课时安排】2课时 【授课形式】讲授、多媒体教学 【教学方法】讲授法、练习法、问答法、演示法 【教学用具】计算机、黑板、多媒体、课件 【教学目标】 知识目标:1、了解数制、基、基数及位权的概念; 2、掌握二进制、十进制、八进制、十六进制的表示方法; 3、掌握二进制与十进制间相互转换的方法。 技能目标:1、培养学生逻辑运算能力; 2、培养学生分析问题、解决问题的能力; 3、培养学生独立思考问题的能力。 情感目标:通过数制转换的学习培养学生的计算机科学涵养,同时,让学生体会到认真的学习态度,严谨细致的学习习惯。 【教学重点】1、进制、基数、位权的概念。2、二进制与十进制间相互转换方法。【教学难点】二进制与十进制间相互转换 【教学过程】 一、师生问好,考勤 二、复习旧识,导入新课 (以下教师的语言、活动简称“师”,学生的活动简称“生”)

课前引入: 师:我想请大家做一道算术题:110+110= ? (学生几乎都回答等于220)。 师:那么220这个答案对还是不对呢?可以说对,也可以说不对。在学习本课之前,回答220是正确的,但是,在我们学完今天的知识后,答案就不一是220了。为什么呢? (设疑,学生思考,教师点名个别学生回答) 师:谈到数字,有很多同学可能会觉的很可笑,这不就是1234……是的,在生活中,我们用的一般都是十进制。那么大家想一下,我们的生活中,还用到了哪些别的进制? (学生思考回答:十二进制、60进制等) 师:我们的一年有12个月,这是十二进制。一小时等于60分,一分等于60秒,我们的时间是60进制。当然,还有一些,比如一米等于三尺,三进制。比如我们的鞋子或袜子,两只为一双,这是二进制。可是我们通过前面的课程已经知道计算机唯一能识别是二进制数,这正是我们本节课所学习的重点。(本节课我们将了解数制、基、基数及位权的概念;掌握二进制、十进制、八进制、十六进制的表示方法;掌握二进制与十进制间相互转换的方法。) 三、新课讲解 (一)主要概念 1.数制 师:在我们小学阶段最开始学习的就是十以内的加法,之后是两位数的加法,在两位数加法的学习中,老师是不是经常会说,要注意逢十进一?也就是我们平常说的别忘了进位。像这样按进位的原则进行记数的方法叫做进位记数制。简称为“数制”或“进制”。我们平时用的最多的就是十进制了,那么,大家想一下,还有没有其他的进制呢?比如,一周七天,七进制;一年12个月,十二进制;一小时六十分钟,六十进制;1公斤=2斤,1时辰=2小时,逢二进一,就是二进制。除此以外在计算机语言中常用八进制和十六进制。由此也可以推断出:每一种进制的进位都遵循一个规则,那就是N进制,逢N进一。 2.基与基数

相关文档
最新文档