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

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

课程设计报告

设计题目:进制转换问题

学生姓名:

专业:信息安全

班级:信息安全10-02

学号:

指导教师:

完成日期:2011年12月

课程设计报告的内容及要求

一、问题描述:

任意给定一个M进制的数x ,请实现如下要求:

1、求出此数x的10进制值(用MD表示)

2、实现对x向任意的一个非M进制的数的转换

3、至少用两种或两种以上的方法实现上述要求(用栈解决,用数组解决,其它方法解决)软件环境:Vc6.0编程软件

二、实验环境

运行平台:Win32

硬件:普通个人pc机

软件环境:VC++6.0编程软件

三、解决办法:

1、用数组实现该问题:

ten_else()函数是实现十进制转换为其它进制的函数,先设置一个while循环,当十进制数g等于零时停止,再将输入的十进制数x取首先对需要转换的进制M取余,然后再对其取整,并将所得的余数依次存入一个数组中,然后逆向取出数组中的元素,即得到转换后的结果。将其他进制M转换为十进制,并将其转换为非M进制数是在主函数中实现的。M进制转十进制则是从该M进制数的最后一位开始算,依次列为第0、1、2…n位并分别乘以M 的0、1、2…n次方,将得到的次方相加便得到对应的十进制数,再调用ten_else()函数将其转换为非M进制的数。实际上十进制起到了一个桥梁作用。

2、用栈实现该问题:

与数组方法核心思想相同,stack定义栈,初始化一个空栈,然后判断是否为空,接着是去栈顶元素(用z表示栈顶元素),数据入栈,出栈的操作。栈具有后进先出的性质,故其用s.pop()取数较数组的逆向取数较为方便,体现了栈的优越性。

四、设计和编码的回顾讨论和分析

(1)函数ten_else()的作用体现在将任意10进制数转换为非10进制数,程序能实现1~16进制的相互转换。在10进制以上的数需要用字母表示,由此设计了switch函数,当出现余数大与10的情况可以调用相应的字母。考虑到最终结果是所求余数的倒序,添加新的整型变量j,通过一个for循环实现倒序。

(2)编程初期设计了else_ten函数,后几经修改将其融入main函数中较为直观。

(3)当输入10进制以下的数向10进制转换时候较为简单,程序中设计char型数组s[maxnum]来统计所输入数据的位数,不需要用户输入。在求10进制的时候通过for循环求一个累和即可。

(4)当输入10进制以上的数设计字母较为复杂,通过对ASCⅡ表的理解设计程序。

(5)在用栈法实现非10进制向10进制转换的时候遇到了些麻烦,当输入8A的时候程序将8当成字符类型,将其编译为数字56,导致最终转换结果出现错误。于是通过查阅ASCⅡ表对程序做出了修正,设计了条件语句if(z<=57)z-=48;if(z>=65){z-=65;z+=10;}

五、程序框图

六、经验和体会

(1)我们在写程序的时候要多角度考虑问题,比如题目中要求栈法与数组方法同时去实现进制转换问题。在编译过程中我们可以将特殊的问题逐渐的化为一般问题,比如10进制转换到16进制是,我举的例子是200转换为C8。

(2)通过此次课程设计的考验,让我们回顾了算法与数据结构这门课的主要内容。掌握了如何分别用数组和栈来实现数据存储与转换,加深了对栈的掌握和操作,以及栈先进后出的特点。

(3)在程序的调试初期,我们遇到了许多问题,暴露了对编译软件不熟悉的弊端,如设置断点和单步调试,让我们意识到要想学好编程,就得多上机调试。一个星期时间自己用vc++实现了进制转换问题,收获很大同时在编写代码过程中也出现了很多的问题,最大的问题就是对程序设计框架结构的不了解,在实现代码与功能的连接时经常会出现各种不同的错误,在实现一些功能时系统常常会报错,许多错误不知从哪修改。课程设计中,回顾了很多以前的东西,收获很大。

(4)每一次的课程设计,都是让我们对原有的知识从了解表面到深入本质,从个体学习到整体把握的跳跃,对新知识的汲取,更是把课本的知识应用到实际中,让我们了解了我们的学习有什么用,能够解决什么样的问题,增加了自信和学习的动力。

总之,我们收获匪浅首先由衷感谢老师提供这样一个锻炼自己的机会,感受到学来的知识不只是用来完成试卷的。一向惯于独立思考的自己学会了积极的同同学、朋友交流,取长补短,共同进步。课程设计使自己发现考试并不是最重要,最重要的是能运用所学的知识。在整个课程设计的学习过程中,不再是用学到的知识解题,而是在实际运用时遇到什么学什么,重在把知识应用于实际。

五、附录

代码框架

//实现1~16进制之间的相互转化(数组方法)

//实现1~16进制之间的相互转化(数组方法)

#include

#include

//#include

#define N 100

#define max_num 10

int y,n,s;

int m,r,x;

void ten_else(int g,int h) //十进制数转换为其他进制数{

int c[N],mod;

int i=0,j;

while(g!=0)

{

mod = g % h;

g = g/h;

c[i] = mod;

i++;

}

for(j=i-1;j>=0;j--)

switch(c[j])

{

case 10: cout<<"A"; break;

case 11: cout<<"B"; break;

case 12: cout<<"C"; break;

case 13: cout<<"D"; break;

case 14: cout<<"E"; break;

case 15: cout<<"F"; break;

default: cout<

}

}

/*void ten_else(int g,int h) //十进制数转换为其他进制数{

int c[N],mod;

int i=0,j;

while(g!=0)

{

mod = g % h;

g = g/h;

c[i] = mod;

i++;

}

for(j=i-1;j>=0;j--)

{

if(c[j] <= 9)

cout<

else

printf("%c",('A'+(c[j]-10)));

//cout<<('A'+(c[j]-9));

}

}

*/

void main()

{

cout<<"请输入任意进制M:";

cin>>m;

if(m<10) //2~9进制转换成10进制

{

char s[max_num];

int k,z=0,j=0;//z存储十进制数,j表示输入m进制数的位数。

for(int i=0;i

s[i]='u';

cout<<"请输入一个"<

cin>>s;

for(i=1;i

if(s[i]!='u') j++;

k=j;//保存输入位数

for(i=0;i

z=z+(s[i]-'0')*(pow(m,--k));

cout<<"转换后的10进制数MD为:"<

cout<<"请输入需要转换成的进制(非M):";

cin>>r;

cout<<"输出转换成"<

ten_else(z,r);

cout<

}

else if(m<=16 && m>=11) //11~16进制转换成10进制

{

char s[max_num];

int k,z=0,j=0;//z存储十进制数,j表示输入16进制数的位数。

for(int i=0;i

s[i]='u';

cout<<"请输入一个"<

cin>>s;

for(i=1;i

if(s[i]!='u') j++;

k=j;//保存输入位数

for(i=0;i

{

if(s[i]>='A'&&s[i]<='F')

z=z+(s[i]-'A'+10)*(pow(m,--k));

if(s[i]>='a'&&s[i]<='f')

z=z+(s[i]-'a'+10)*(pow(m,--k));

if(s[i]>='0'&&s[i]<='9')

z=z+(s[i]-'0')*(pow(m,--k));

}

cout<<"转换后的10进制数为:"<

cout<<"请输入需要转换成的进制(非M):";

cin>>r;

cout<<"输出转换成"<

ten_else(z,r);

cout<

}

else if(m==10) //十进制转换成其它进制

{

int x;

cout<<"请输入一个10进制数:";

cin>>x;

cout<<"请输入需要转换成的进制(非M):";

cin>>r;

if(r<=10)

{

cout<<"输出转换成"<

ten_else(x,r);

cout<

}

else

{

cout<<"输出转换成"<

ten_else(x,r);

cout<

}

}

}

//实现1~16进制之间的相互转化(堆栈方法)

#include

#include

enum error_code{success,overflow,underflow};

const maxlen=100;

int a,n,h;

class stack

{

public:

stack();

bool empty()const;

bool full()const;

error_code get_top(int &x)const;

error_code push(int x);

error_code pop();

int seesize(){return count;}

private:

int count;

int data[maxlen];

};

//初始化链栈

stack::stack()

{

count = 0;

}

bool stack::empty()const //判断栈是否为空

{

if(count == 0) return true;

return false;

}

error_code stack::get_top(int &x)const //取栈顶元素{

if ( empty() ) return underflow;

else

{

x = data[count - 1];

return success;

}

}

error_code stack::push(int x) //入栈

{

if( full() ) return underflow;

data[count] = x;

count ++;

return success;

}

error_code stack::pop() //出栈

{

if ( empty() ) return underflow;

count --;

return success;

}

bool stack::full()const{

if( count == maxlen ) return true;

return false;

}

void ten_else(int g,int h) //十进制数g转换为其他进制(h进制)数{

int a,x;

int mod;

stack s;

mod = g % h;

if(mod>9)

{

a=mod+55;

if(a>=65)

{

switch(a - 55)

{

case 10:

cout<<"A";

break;

case 11:

cout<<"B";

break;

case 12:

cout<<"C";

break;

case 13:

cout<<"D";

break;

case 14:

cout<<"E";

break;

case 15:

cout<<"F";

break;

default:

break;

}

}

else

{

s.push(a);

}

}

else

{

s.push(mod);

}

g = g/h;

if(g>0) ten_else(g,h);

while(!s.empty())

{

s.get_top(x);

s.pop();

cout<

}

}

int main()

{

int m,a,z,sum;

int i = 1;

int j = 0;

sum=0;

stack s;

cout<<"请输入任意进制M(1~16):";

cin>>m;

cout<<"请输入"<

if(m == 10)

{

int x;

cin>>x;

cout<<"10进制数MD即为:"<

cout<<"输入最终转化的进制(非M):";

cin>>h;

ten_else(x,h);

cout<

}

else if(m<10)

{

int x;

cin>>x;

while(x!=0)

{

a = x % 10;

x = x/10;

s.push(a);

}

while(!s.empty())

{

s.get_top(z);

sum = sum + z*pow(m,s.seesize()-1);

s.pop();

}

cout<<"转换的10进制数为:";

cout<

cout<<"输入最终转化的进制(非M):";

cin>>h;

ten_else(sum,h);

cout<

}

else

{

char x;

int j = 0;

do{

cin>>x;

if(x!='.')s.push(x);

}while(x!='.');

while(!s.empty())

{

s.get_top(z);

if(z<=57)z-=48;

if(z>=65){z-=65;z+=10;}

sum = sum + z * pow(m,j);

j++;

s.pop();

}

cout<<"转换的10进制数为:";

cout<

cout<<"输入最终转化的进制(非M):";

cin>>h;

ten_else(sum,h);

cout<

}

return 0;

}

十进制数与十六进制数的转换方法

若十进制数23785转为十六进制,则用23785/16=1486余9,1486/16=92余14,92/16=5余12,5/16=0余5,十六进制中,10对应为a、11对应为b、。。。。。。、15对应为f,再将余数倒写为5ce9,则十进制23785=十六进制5ce9 十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方…… 所以,在第N(N从0开始)位上,如果是是数X (X 大于等于0,并且X小于等于15,即:F)表示的大小为X * 16的N次方。 假设有一个十六进数2AF5, 那么如何换算成10进制呢? 用竖式计算:2AF5换算成10进制: 第0位:5 * 16^0 = 5 第1位:F * 16^1 = 240 第2位:A * 16^2 = 2560 第3位:2 * 16^3 = 8192 + ------------------------------------- 10997 直接计算就是: 5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997 二进制的1101转化成十进制 1101(2)=1*2^0+0*2^1+1*2^2+1*2^3=1+0+4+8=13 转化成十进制要从右到左用二进制的每个数去乘以2的相应次方不过次方要从0开始 十进制转二进制:用2辗转相除至结果为1 将余数和最后的1从下向上倒序写就是结果例如302 302/2 = 151 余0 151/2 = 75 余1 75/2 = 37 余1 37/2 = 18 余1 18/2 = 9 余0 9/2 = 4 余1 4/2 = 2 余0 2/2 = 1 余0 1/2 = 0 余1 故二进制为100101110 二进制转八进制 在把二进制数转换为八进制表示形式时,对每三位二进制位进行分组,应该从小数点所在位置分别向左向右划分,若整数部分倍数不是3的倍数,可以在最高位前面补若干个0;对小数部分,当其位数不是的倍数时,在最低位后补若干个0.然后从左到右把每组的八进制码依次写出,即得转换结果. 你算一下就知道了啊比如110=2^2+2+0=6 二进制转十六进制 要将二进制转为16进制,只需将二进制的位数由右向左每四位一个单位分隔,分的不够的前边补零,用四位数的二进制数来代表一个16进制。转换表如下,括号内为十六进制 0000(0)0001 (1)0010 (2)0011 (3)0100 (4)0101 (5)0110 (6)0111 (7)1000 (8)1001 (9)1010(A)1011 (B)

大数据结构课程设计——进制转换

数据结构课程设计 设计说明书 进制转换的实现 学生JUGG 学号¥#·· 班级Dota all star——成绩优秀 指导教师Puck dota科学与技术 天灾元年 3 月 14 日

Dota all star

课程设计任务书 天灾元年—近卫戊年第二学期 专业:ganker 学号:sadofaiofo : 课程设计名称:数据结构课程设计 设计题目:进制转换的实现 完成期限:自天灾元年年 3 月 1 日至近卫戊年年 3 月14 日共 2 周 设计依据、要求及主要容(可另加附页): 进制数制是人们利用符号进行计数的科学方法。数制有很多种,在计算机中常用的数制有:十进 制,二进制、八进制和十六进制。十六进制数有两个基本特点:它由十六个字符0~9以及A,B,C,D, E,F组成(它们分别表示十进制数0~15),十六进制数运算规律是逢十六进一,例如:十六进制数4AC8 可写成(4AC8)16,或写成4AC8H。 要求: (1)输入一个十进制数N,将它转换成R进制数输出,并可以进行逆转换。 (2)输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10)。 (3)为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考 16进制(比如,10用A表示,等等)。 (4)界面友好。 指导教师(签字):教研室主任(签字): 批准日期:年月日 摘要

由于数制计算和不同数制之间转换的需要,设计了一个10进制转换其它进制(36进制以)及逆转换的软件,该软件具有简单的将10进制数转换成2、8、16进制数以及较复杂的高进制数的转换和逆转功能。本软件采用C语言编写以VC++作为软件开发环境,采用顺序栈存储方式来存储运算中的数位,借助栈后进先出的特点,易于结果输出。操作简单,界面清晰,易于为用户所接受。 关键词:进制转换;顺序栈;逆转换

各种进制之间转换方法

各进制转换方法(转载) 一、计算机中数的表示: 首先,要搞清楚下面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 三、各种进制数的运算

二进制转换成BCD码 实验报告

一、实验目的 (1)进一步熟练掌握8086汇编语言编译调试工具和环境的操作; (2)掌握完整8086汇编的程序设计编写方法; (3)掌握简单的数值码制转换方法; (4)掌握键盘输出的DOS功能调用方法。 二、实验要求: 将AX中的一个二进制数(对应的十进制数范围是0-65535),转换成压缩性BCD 码表示的十进制,并从屏幕输出转换结果。要求用减法实现,并比较与除法方法进行运行速度比较。 三、实验及报告要求: 3.1、简要说明算法,并画出正确的程序流程图; 3.2、给出完整正确的源程序代码,要求给每一句伪指令或指令加上注释; 3.3、分别在DOS和Windows下编译、连接源程序生成可执行文件并调试,比较两个环境下生成的机器码的长度、寄存器内容、计算结果的异同。 3.4、如何观察转换过程中标志寄存器中各标志位的结果?如何观察转换结果的变化?试改变被转换数值,对结果与编制为的变化加以说明和解释。 3.5、写出完整的实验报告,特别是“实验结果”与“实验总结体会”部分,是评分的主要依据。 3.6、实验总结中要求结合实验中的经验、教训或体会对汇编语言格式、调试方法和微机原理学习方法作出总结。 四、程序流程图 减法。即五位数先循环减10000,直到不够减了,做减法的次数就是万分位的结果;将不够减之前一次的余数恢复,再循环减去1000,直到不够减了,做减法的次数就是千分位的结果;以此类推,最后恢复的正余数就是个位的结果. 除法。即五位数先除以10000,得到的商存放万位数的变量上;再将余数除以1000,得到的商存放千位数的变量上;之后将余数除以100,得到的商存放百分位的变量上;以此类推,最后的余数存放在个位的变量上。

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

《数据结构》 课程设计报告书 题目:数制转换 系别:计算机科学与应用系学号: 学生姓名: 指导教师: 完成日期: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.数组测试结果

各种进制之间转换方法

各进制转换方法(转载)一、计算机中数的表示: 首先,要搞清楚下面3个概念 ?数码:表示数的符号 ? 基:数码的个数 ?权:每一位所具有的值

、各种进制的转换问题 1. 二、八、十六进制转换成十进制 2. 十进制转换成二、八、十六进制 3. 二进制、八进制的互相转换 4. 二进制、十六进制的互相转换 1、二、八、十六进制转换成十进制 方法:数码乘以相应权之和 例(HloJ-l/25+lx24+l/23+0/22+ h2:+h20 -(59)10 例(136)8=lx82+3x8l+6x8°=(94)10 例(1F2^)1S=1X163+15X16S +2\16] + 10/16° = (7978)10 2、十进制转换成二、八、十六进制 方法:连续除以基,直至商为0,从低到高记录余数

例把十进制数159转换成八进制数 8| 19 8辽 (159)IO =(237)8 例把十进制数59转换成二进制数 (59)IO =(111O11)2 2 余余余余余余 8 159

例把十进制数459转换成十六进制数 u | 1| C| B (459)io=(1CB)ib ' 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 三、各种进制数的运算 方法:逢满进具体计算与平时十进制的计算类似,以十六进制为例: 加法:

进制转换编程报告

进制转换编程报告 一.引言: 进制转换是人们利用符号来计数的方法,包含很多种数字转换。进制转换由一组数码符号和两个基本因素(“基”与“权”)构成。 二.方法原理介绍: 十进制整数转换为二进制整数 十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为0时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。 十进制整数转二进制 如:255=(11111111)B 255/2=127=====余1 127/2=63======余1 63/2=31=======余1 31/2=15=======余1 15/2=7========余1 7/2=3=========余1 3/2=1=========余1 1/2=0=========余1 789=1100010101 789/2=394.5 =1 第10位 394/2=197 =0 第9位 197/2=98.5 =1 第8位 98/2=49 =0 第7位 49/2=24.5 =1 第6位 24/2=12 =0 第5位 12/2=6 =0 第4位 6/2=3 =0 第3位 3/2=1.5 =1 第2位 1/2=0.5 =1 第1位 原理: 众所周知,二进制的基数为2,我们十进制化二进制时所除的2就是它的基数。谈到他的原理,就不得不说说关于位权的概念。某进制计数制中各位数字符号所表示的数值表示该数字符号值乘以一个与数字符号有关的常数,该常数称为“位权” 。位权的大小是以基数为底,数字符号所处的位置的序号为指数的整数

进制转换程序设计

课程设计 题目不同数制的数据相互转换程序的 设计 学院计算机科学与技术 专业计算机科学与技术 班级计算机0605班 姓名余欢欢 指导教师刘传文 2009 年 1 月15 日 附件2:

课程设计任务书 学生姓名:余欢欢专业班级:计算机0605班 指导教师:刘传文工作单位:计算机科学与技术学院 题目: 初始条件: 理论:学完“汇编语言程序设计”、“课程计算机概论”、“高级语言程序设计”和“数字逻辑”。 实践:计算机学院科学系实验中心提供计算机和软件平台。如果自己有计算机可以在其上进行设计。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) (1)输入二进制,十六进制,十进制的无符号数,将它们转换成不同进制的形式,并且输出出来。 (2)程序应有操作提示、输入和输出,界面追求友好,最好是菜单式的界面。 (3)设计若干用例(测试数据),上机测试程序并分析(评价)所设计的程序。 (4)设计报告格式按附件要求书写。课程设计报告书正文的内容应包括: 在正文第一行写课程设计题目; 1.需求说明(要求、功能简述)或问题描述; 2.设计说明(简要的分析与概要设计); 3.详细的算法描述; 4.源程序与执行结果(含测试方法和测试结果); 5.使用说明; 6.总结,包括设计心得(设计的特点、不足、收获与体会)和展望(该 程序进一步改进扩展的设想)。 时间安排: 设计时间一周:周1:查阅相关资料。 周2:系统分析,设计。 周3~4:编程并上机调试。 周5:撰写课程设计报告。 设计验收安排:20周星期五8:00起到计算机学院科学系实验中心进行上机验收。 设计报告书收取时间:20周的星期五下午5:00之前。 指导教师签名: 2009年1月9日 系主任(或责任教师)签名: 2009年1月 9日

数据结构 设计进制转换计算器

天津职业技术师范大学Tianjin University of Technology and Education 《面向对象程序设计》 课程设计报告 设计进制转换计算器 学院:信息技术工程学院 专业:计算机科学与技术 班级学号:14 学生姓名:** 指导教师:***

2012年12月 一.课程设计名称:采用面向对象的程序设计方法设计实现二进制、八进制、十进制、十六进制之间的进制转换计算器。 二.实用工具软件:Microsoft Visual C++ 三.课程设计内容简介: #include #include #include//字符串头文件 #include class GY//各进制转换为十进制 { public: GY() {} int ten()//十转二 { int ss,aa; cout<<"请输入一个十进制数"<>ss; aa=ss; int tw[10],i(0),j(0); while(ss) { tw[i]=ss%2; ss/=2; i++; } cout<<"转换为8进制为\n"<=0;j--) //输出二进制结果 cout<

各种进制之间的转换方法

各种进制之间的转换方法 ⑴二进制B转换成八进制Q:以小数点为分界线,整数部分从低位到高位,小数部分从高位到低位,每3位二进制数为一组,不足3位的,小数部分在低位补0,整数部分在高位补0,然后用1位八进制的数字来表示,采用八进制数书写的二进制数,位数减少到原来的1/3。 例:◆二进制数转换成八进制数: = 110 110 . 101 100B ↓↓ ↓ ↓ 6 6 . 5 4 = ◆八进制数转换成二进制数: 3 6 . 2 4Q ↓ ↓ ↓ ↓ 011 110 . 010 100 = ◆ 低位,每4位二进制数为一组,不足4位的,小数部分在低位补0,整数部分在高位补0,然后用1位十六进制的数字来表示,采用十六进制数书写的二进制数,位数可以减少到原来的1/4。 例:◆二进制数转换成十六进制数: .100111B = 1011 0101 1010 . 1001 1100B ↓ ↓ ↓ ↓ ↓ B 5 A . 9 C = 5A ◆十六进制数转换成二进制数: = A B . F EH ↓ ↓ ↓ ↓ 1010 1011. 1111 1110 = .1111111B 先把八进制数Q转换成二进制数B,再转换成十六进制数H。 例:◆八进制数转换成十六进制数: = 111 100 000 010 . 100 101B = .100101B = 1111 0000 0010 . 1001 0100B = F 0 2 . 9 4H = ◆十六进制数转换成八进制数: = 0001 1011 . 1110B = = 011 011 . 111B = 3 3 . 7Q = ⑷二进制数B转换成十进制数D:利用二进制数B按权展开成多项式和的表达式,取基数为2,逐项相加,其和就是相应的十进制数。

C51单片机课设报告(进制转换)

单片机原理课程设计报告题目:51单片机实现进制转换 专业:信息工程 班级:信息101 学号:1004020307 小组成员: 1004020103 指导教师:吴叶兰 北京工商大学计算机与信息工程学院

题目:51单片机实现进制转换 1、设计目的 1)熟悉51单片机的编程; 2)熟悉单片机开发的基本焊接; 3)熟悉单片机元件的使用方法; 4)熟悉C51的软件开发环境(编程软件Keil、烧录软件STC_ISP_v479) 2、设计要求 1)按键输入数据,具有确定和清零功能; 2)1602液晶屏幕显示,具有显示输入输出和提示功能; 3)2,、8、10、16进制数可任意互相转化; 3、硬件电路设计(包括电路图及说明) 1)控制模块: 控制模块是由1块STC89C52、1个12MHz无源晶振、1个复位电路22uF电容、1个1k欧姆电阻、1个8位1k欧姆排阻组成。 STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。芯片实际选用的STC89C52与 protues模拟电路图中的AT89C52功能基本相同,区别在于烧录程序的方式。 2)显示模块: 显示模块由1块1602液晶显示屏、16根数据线组成。 1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。液晶显示屏际实际选用的是QC1602A与 protues模拟电路图中的LM016功能基本相同。

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

课程设计报告 设计题目:进制转换问题 学生姓名: 专业:信息安全 班级:信息安全10-02 学号: 指导教师: 完成日期:2011年12月 课程设计报告的内容及要求 一、问题描述: 任意给定一个M进制的数x ,请实现如下要求: 1、求出此数x的10进制值(用MD表示) 2、实现对x向任意的一个非M进制的数的转换 3、至少用两种或两种以上的方法实现上述要求(用栈解决,用数组解决,其它方法解决)软件环境:Vc6.0编程软件 二、实验环境 运行平台:Win32 硬件:普通个人pc机 软件环境:VC++6.0编程软件 三、解决办法: 1、用数组实现该问题: ten_else()函数是实现十进制转换为其它进制的函数,先设置一个while循环,当十进制数g等于零时停止,再将输入的十进制数x取首先对需要转换的进制M取余,然后再对其取整,并将所得的余数依次存入一个数组中,然后逆向取出数组中的元素,即得到转换后的结果。将其他进制M转换为十进制,并将其转换为非M进制数是在主函数中实现的。M进制转十进制则是从该M进制数的最后一位开始算,依次列为第0、1、2…n位并分别乘以M 的0、1、2…n次方,将得到的次方相加便得到对应的十进制数,再调用ten_else()函数将其转换为非M进制的数。实际上十进制起到了一个桥梁作用。 2、用栈实现该问题: 与数组方法核心思想相同,stack定义栈,初始化一个空栈,然后判断是否为空,接着是去栈顶元素(用z表示栈顶元素),数据入栈,出栈的操作。栈具有后进先出的性质,故其用s.pop()取数较数组的逆向取数较为方便,体现了栈的优越性。

四、设计和编码的回顾讨论和分析 (1)函数ten_else()的作用体现在将任意10进制数转换为非10进制数,程序能实现1~16进制的相互转换。在10进制以上的数需要用字母表示,由此设计了switch函数,当出现余数大与10的情况可以调用相应的字母。考虑到最终结果是所求余数的倒序,添加新的整型变量j,通过一个for循环实现倒序。 (2)编程初期设计了else_ten函数,后几经修改将其融入main函数中较为直观。 (3)当输入10进制以下的数向10进制转换时候较为简单,程序中设计char型数组s[maxnum]来统计所输入数据的位数,不需要用户输入。在求10进制的时候通过for循环求一个累和即可。 (4)当输入10进制以上的数设计字母较为复杂,通过对ASCⅡ表的理解设计程序。 (5)在用栈法实现非10进制向10进制转换的时候遇到了些麻烦,当输入8A的时候程序将8当成字符类型,将其编译为数字56,导致最终转换结果出现错误。于是通过查阅ASCⅡ表对程序做出了修正,设计了条件语句if(z<=57)z-=48;if(z>=65){z-=65;z+=10;} 五、程序框图 六、经验和体会 (1)我们在写程序的时候要多角度考虑问题,比如题目中要求栈法与数组方法同时去实现进制转换问题。在编译过程中我们可以将特殊的问题逐渐的化为一般问题,比如10进制转换到16进制是,我举的例子是200转换为C8。 (2)通过此次课程设计的考验,让我们回顾了算法与数据结构这门课的主要内容。掌握了如何分别用数组和栈来实现数据存储与转换,加深了对栈的掌握和操作,以及栈先进后出的特点。 (3)在程序的调试初期,我们遇到了许多问题,暴露了对编译软件不熟悉的弊端,如设置断

常见的进制转换方法

一:简述: 进位计数制:是人们利用符号来计数的方法。一种进位计数制包含一组数码符号和两个基本因素。 (1)数码:用不同的数字符号来表示一种数制的数值,这些数字符号称为”数码”。 (2)基:数制所使用的数码个数称为”基”。 (3)权:某数制每一位所具有的值称为”权”。 二:进制转换的理论 1、二进制数、十六进制数转换为十进制数:用按权展开法 把一个任意R进制数a n a n-1 ...a1a0 . a-1a-2...a-m 转换成十进制数,其十进制数值为每一位数字与其位权之积的和。 a n×R n+ a n-1×R n-1+…+ a1×R 1+ a0×R0+ a-1×R-1+ a-2×R-2 + …+ a-m×R-m 2、十进制转化成R进制 十进制数轮换成R进制数要分两个部分: 整数部分:除R取余数,直到商为0,得到的余数即为二进数各位的数码,余数从右到左排列(反序排列)。 小数部分:乘R取整数,得到的整数即为二进数各位的数码,整数从左到右排列(顺序排列)。 3、十六进制转化成二进制 每一位十六进制数对应二进制的四位,逐位展开。 4、二进制转化成十六进制 将二进制数从小数点开始分别向左(对二进制整数)或向右(对二进制小数)每四位组成一组,不足四位补零。 三、具体实现 1、二进制转换成十进制 任何一个二进制数的值都用它的按位权展开式表示。 例如:将二进制数(10101.11)2转换成十进制数。 (10101.11)2=1*24+0*23+1*22+0*21+1*20+1*2-1+1*2-2 =24+22+20+2-1+2-2=(21.75)10 2、十进制整理转换成二进制 将十进制整数转换成二进制整数采用“除2取倒余法”。 即将十进制整数除以2,得到一个商和一个余数;再将商除以2,又得到一个商和一个余数; 以此类推,直到商等于零为止。 每次得到的余数的倒排列,就是对应二进制数的各位数。 于是,结果是余数的倒排列,即为: (37)10=(a5a4a3a2a1a0)2=(100101)2 3、十进制小数转换成二进制小数 十进制小数转换成二进制小数是用“乘2取整法”。即用2逐次去乘十进制小数, 将每次得到的积的整数部分按各自出现的先后顺序依次排列,就得到相对应的二进制小数。 将十进制小数0.375转换成二进制小数,其过程如下:

计算机各种进制转换

6.1 为什么需要八进制和十六进制? 编程中,我们常用的还是10进制……必竟C/C++是高级语言。 比如: int a = 100,b = 99。 不过,因为数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决问题。 但,二进制数太长了。比如int 类型占用4个字节,32位。比如100,用int类型的二进制数表达将是: 0000 0000 0000 0000 0110 0100 面对这么长的数进行思考或操作,没有人会喜欢。因此,C,C++ 没有提供在代码直接写二进制数的方法。 用16进制或8进制可以解决这个问题。因为,进制越大,数的表达长度也就越短。不过,为什么偏偏是16或8进制,而不其它的,诸如9或20进制呢? 2、8、16,分别是2的1次方,3次方,4次方。这一点使得三种进制之间可以非常直接地互相转换。8进制或16进制缩短了二进制数,但保持了二进制数的表达特点。在下面的关于进制转换的课程中,你可以发现这一点。 6.2 二、八、十六进制数转换到十进制数 6.2.1 二进制数转换为十进制数 二进制数第0位的权值是2的0次方,第1位的权值是2的1次方…… 所以,设有一个二进制数:0110 0100,转换为10进制为: 下面是竖式: 0110 0100 换算成十进制 第0位 0 * 20 = 0 第1位 0 * 21 = 0 第2位 1 * 22 = 4 第3位 0 * 23 = 0

第4位 0 * 24 = 0 第5位 1 * 25 = 32 第6位 1 * 26 = 64 第7位 0 * 27 = 0 + --------------------------- 100 用横式计算为: 0 * 20 + 0 * 21 + 1 * 22 + 1 * 23 + 0 * 24 + 1 * 25 + 1 * 26 + 0 * 27 = 100 0乘以多少都是0,所以我们也可以直接跳过值为0的位: 1 * 2 2 + 1 * 2 3 + 1 * 25 + 1 * 26 = 100 6.2.2 八进制数转换为十进制数 八进制就是逢8进1。 八进制数采用 0~7这八数来表达一个数。 八进制数第0位的权值为8的0次方,第1位权值为8的1次方,第2位权值为8的2次方…… 所以,设有一个八进制数:1507,转换为十进制为: 用竖式表示: 1507换算成十进制。 第0位 7 * 80 = 7 第1位 0 * 81 = 0 第2位 5 * 82 = 320 第3位 1 * 83 = 512 + -------------------------- 839 同样,我们也可以用横式直接计算: 7 * 80 + 0 * 81 + 5 * 82 + 1 * 83 = 839 结果是,八进制数 1507 转换成十进制数为 839

进制的转换系统实验报告

课程名称: 《数据结构》课程设计 分数_______ 课程设计题目:进制转化系统 姓名:朱其奎 院系: 计算机学院 专业:计算机科学与技术学院 年级: 三 学号: E01114288 指导教师:王爱平 2013 年 10月 12 日 目录: 1课程设计的目的 (3) 2 需求分析 (3) 3 课程设计报告内容 (3)

3.1概要设计 (3) 3.2详细设计 (x) 3.3调试分析 (5) 3.4用户手册 (9) 3.5测试结果 (9) 3.6程序清单 (9) 4 小结 (11) 5 参考文献 (11) 1.课程设计的目的 (1) 熟练使用 C 语言编写程序,解决实际问题; (2) 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力; (3) 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; (4) 提高综合运用所学的理论知识和方法独立分析和解决问题的能力; 2. 需求分析

任意给定一个M进制的数x ,请实现如下要求: ①求出此数x的10进制值(用MD表示) ②实现对x向任意的一个非M进制的数的转换。 ③至少用两种或两种以上的方法实现上述要求(用栈解决,用数组解决,其它方法解决)。 3 课程设计报告内容 ①求出此数x的10进制值(用MD表示) ②实现对x向任意的一个非M进制的数的转换。 ③分别用栈解决,用数组解决该问题。 3.1概要设计 1: 输入数据 2: 求该数的十进制MD 3: 向任意的一个非M进制数转换 4: 使用栈的方式求该数的十进制MD和非M进制的转换 5: 保存数据 6: 退出程序 3.2详细设计 数组实现任意进制的转化 int SJZ(char a[],int m) { int len1,sum; int num; int i,j,k; len1=strlen(a); sum=0; num=0; if(m==10) { for(i=len1-1,j=1;i>=0;i--) { sum+=(int(a[i]-48))*j; j*=10; } } else { for(i=len1-2,j=1;i>=0;i--,j++) { if(a[i]-48>9)

C语言进制转换课程设计

课程设计 进制转换 课程设计名称:数据结构课程设计 专业班级: 学生姓名: 学号: 指导教师: 设计时间:

计算机专业课程设计任务书

目录

一、转换概述 1、需求分析 进制数制是人们利用符号进行计数的科学方法。数制有很多种,在计算机中常用的数制有:十进制,二进制、八进制和十六进制。十六进制数有两个基本特点:它由十六个字符0~9以及A,B,C,D,E,F组成(它们分别表示十进制数0~15),十六进制数运算规律是逢十六进一。 要求: (1)输入一个十进制数N,将它转换成R进制数输出,并可以进行逆转换。 (2)输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R (2<=R<=16, R<>10)。 (3)为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。 (4)界面友好。 2、概要设计 数制转换器程序是要求任意两种数间的相互转化,本次课程设计以任意进制间转换为中心实现二进制、八进制、十进制、十六进制、十八进制之间的相互转化。对输入的任意进制的数字进行转换,实现常见进制间的转换以及用户自定义需要转换的目标进制数,这样大大提高了本程序的用途。常见的二进制、八进制、十进制、十六进制、十六进制之间的固定转换,其转换方式大同小异,从低进制数向高进制数转换进行乘数累加,反之则逐步求余,最终进行分布计算得到想要的结果,对以上思想进行扩展,使其不仅仅局限于那些常见进制间的转换,更多的应用到任意进制之间的转换。本次系统程序,主要有两大模块组成,即任意进制转换为十进制、十进制转换为任意进制,这两部分共同组成了对任意进制数的转换的实现,通过菜单选择,让用户实现自己想要的结果,同时也在程序的简洁上有所压减,达到简洁的应用程序实现相对较复杂的功能。最后打印输出结果,清屏执行

各种进制之间的转换(可编辑修改word版)

一:十进制数转换成二进制数。 随便拿出一个十进制数“39”,(假如你今天买书用了39 元)先来把这个39 转换成2 进制数。 商余数步数39/2= 19 1 第一步 19/2= 9 1 (这里的19 是第一步运算结果的商)第二步 9/2= 4 1 (这里的9 是第二步运算结果的商)第三步 4/2= 2 0 (这里的4 是第三步运算结果的商)第四步 2/2= 1 0 (这里的2 是第四步运算结果的商)第五步 1/2= 0 1 (这里的1 是第五步运算结果的商)第六步 那么十进制数39 转换成2 进制数就是100111. 既39(10)=100111(2) 解析一:1. 当要求把一个10 进制数转换成2 进制数的时候,就用那个数一直除以2 得到商和余数。 2. 用上一步运算结果的商在来除以2,再来得到商和余数。 3. 就这样,一直用上一步的商来除以2,得到商和余数!那么什么时候停止呢? 4. 请看上述运算图,第六步的运算过程是用1 除以2.得到的商是0,余数是1. 那么请你记住,记好了啊共2 点。A: 当运算到商为“0”的时候,就不用运算了。B:1/2 的商为“0”余数为“1”。这个你要死记住,答案并不是0.5!答案就是商为“0”余数为“1”。你不用去思考为什么,记好了就行了! 5. 在上述图中你会清晰的看到每一步运算结果的余数,你倒着把它们写下来就是“100111”了。那么这个就是结果了。 6. 在上述图中符号“/”代表“除以”。 二:十进制数转换成八进制数。 随便拿出一个十进制数“358”,(假如你今天买彩票中了358 元)。358 是我们现实生活中所用10 进制表达出来的一个数值,转换成八进制数十多少?

各种进制之间的转换方法.docx

各种进制之间的转换方法 ⑴二进制 B 转换成八进制 Q:以小数点为分界线,整数部分从低位到高位,小数部分从高位到低位, 每 3 位二进制数为一组,不足 3 位的,小数部分在低位补0,整数部分在高位补0,然后用 1 位八进制的数字来表示,采用八进制数书写的二进制数,位数减少到原来的1/3 。 例:◆二进制数转换成八进制数:= 110 110 .101 100B ↓↓↓↓ 6 6. 5 4 = ◆八进制数转换成二进制数: 36. 2 4Q ↓↓↓↓ 011 110.010 100 = ◆八进制数和二进制数对应关系表 八进制 Q01234567 二进制 B000001010011100101110111 ⑵二进制数 B 转换成十六进制数 H:以小数点为分界线,整数部分从低位到高位,小数部分从高位到 低位,每 4 位二进制数为一组,不足 4 位的,小数部分在低位补 0,整数部分在高位补 0,然后用 1位十六进制的数字来表示,采用十六进制数书写的二进制数,位数可以减少到原来的1/4 。 例:◆二进制数转换成十六进制数: . 100111B = 1011 0101 1010.1001 1100B ↓↓↓↓↓ B5A.9 C = 5A ◆十六进制数转换成二进制数: = A B. F EH ↓↓↓↓ 1010 1011. 1111 1110 =. 1111111B ◆十六进制数、十进制数和二进制数对应关系表 十六进制 H0123456789A B C D E F 十进制 D0123456789101112131415二进制 B0000000100100011010001010110011110001001101010111100110111101111⑶八进制数 Q转换成十六进制数H:八进制数 Q和十六进制数 H 的转换要通过二进制数 B 来实现,即 先把八进制数Q转换成二进制数B,再转换成十六进制数H。 例:◆八进制数转换成十六进制数: = 111 100 000 010. 100101B =. 100101B = 1111 0000 0010.1001 0100B = F 02.9 4H = ◆十六进制数转换成八进制数: =0001 1011 . 1110B = = 011 011.111B = 33.7Q = ⑷二进制数 B 转换成十进制数D:利用二进制数 B 按权展开成多项式和的表达式,取基数为2,逐项 相加,其和就是相应的十进制数。

进制转换方法总结

信息的编码 再问学生计算机存储信息是不是都采用了二进制数二进制也存在缺点,二进制都用0和1, 而且位数太多, 不易理解, 也易出错。为描述方便常用八、十进制,十六进制数表示二进制数 在微机中,一般在数字的后面,用特定字母表示该数的进制。 十进制:日常生活中最常见的是十进制数,用十个不同的符号来表示:0、1、2、3、4、5、6、7、8、9。 基为:10 运算规则:逢十进一,借一当十 在十进制数的后面加大写字母D以示区别。 二进制:二进制数只有两个代码“0”和“1”,所有的数据都由它们的组合来实现。 基为:2 运算规则:“逢二进一,借一当二”的原则。 在八进制数据后加英文字母“B” 八进制:使用的符号:0、1、2、3、4、5、6、7; 运算规则:逢八进一; 基为:8 在八进制数据后加英文字母“O”, 十六进制:使用的符号:采用0~9和A、B、C、D、E、F六个英文字母一起共十六个代码。 运算规则:逢十六进一

基为:16 在十六进制数据后加英文字母“H”以示分别。 那么二进制数与八进制、十进制,十六进制数是怎么转换的呢 3、协作提高:用讲解法对二进制数与十进制数、十六进制数之间相互的转换的原理及方法(将二进制数字表示的位权值与十进制数字表示的位权值加以对比),叫几位学生到黑板上来做,其它同学在下面草稿纸上做。观察在黑板上做的同学的对错情况,要知道错,错在那里。 由N进制数转换成十进制数的基本做法是,把N进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按权相加"法。 各数制的权 如:十进制中,各位的权为10n-1 二进制中,各位的权为2n-1 十六进制中,各位的权为16n-1 八进制中,各位的权为8n-1 1)、二进制转换为十进制 各数制中整数部分不同位的权为“基的n-1次方(n为数值所在的位数,n的最小值取1)”,小数部分不同位的权值为“基的-n次方,从左向右,每移一位,幂次减1”。 二进制数的基数为2 例()2=()D

简单进制转换系统设计

毕业设计(论文)论文题目简单进制转换系统设计学院名称机电与汽车工程学院 班级09机电一体化 学号0905050152 学生姓名钟毅 指导教师黄惠萍 完成时间:2012年4月25日

厦门华天涉外职业技术学院高职毕业设计(论文) 摘要 汇编语言是一门低级语言,虽然其编程相对高级语言来讲要复杂,但是汇编语言编程仍然被应用于很多领域。用汇编语言编程汇编语言是一门编程语言,属于低级语言的一种,使用助记符进行编程,编程虽然较为复杂,但是由于其优势所在,现仍然被应用于很多领域,如硬件驱动、单片机等。用汇编语言编程时,经常要用到进制之间的转换,计算机领域涉及的的进制数包括十进制、十六进制、八进制和二进制数,如何用汇编语言实现这几种进制数据的相互转换呢,下面我们做进一步的研究。 因为计算机内部存储数据都是以二进制形式存储的,所以,用汇编语言实现进制之间的转换主要解决两个问题即可,一个是输入问题,一个是输出问题,比如现将键盘输入的十进制数据转换成十六进制在显示器上显示输出,这样的问题我们不必过多的考虑其转换过程,因为计算机接收了键盘输入的十进制数据之后,在计算机内部便以二进制存储,所以,要解决上述问题,只需要想办法输入十进制数据,然后再想办法将计算机内部的二进制数据以十六进制在显示器上显示输出。因此,用汇编语言实现进制转换的问题就转换成了进制数据的输入和输出问题。下面列举不同进制的输入和输出程序。 时,经常要用到进制之间的转换,本文重点介绍如何用汇编语言实现各种进制数之间的转换。 关键词:汇编语言;进制转换;程序

学生姓名:钟毅论文题目:简单进制转换系统设计 目录 第一章设计任务的预期目标和要求 一.设计题目 (01) 二.设计要求 (01) 三.十六进制的意义 (01) 四.设计过程 (01) 3.1十六进制数的输入 (01) 3.2十六进制输出程序的实现方法 (02) 第二章设计任务 一.程序设计流程图 (02) 二.程序设计 (03) 第三章运行结果 一.正确运行 (06) 第四章课程设计总结报告 一.课程设计中遇到的主要问题和解决方法 (06) 1错误分析 (06) 2.创新和得以之处 (07) 3.设计中的感想和心得体会 (07)

相关文档
最新文档