欢迎来到天天文库
浏览记录
ID:63042617
大小:15.65 KB
页数:13页
时间:2021-08-05
《进制转换C语言的实现.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、索引一、算法分析二、数据结构:1、头文件2、栈的关键操作三、关键程序:1、十进制进制转换为其它2、其它进制转换为十进制一、算法分析实现进制转换需要编个函数,每一函数完成相应进制的转换,下面是各个进制之间转换的数学方法的算法。十进制转二进制:十进制数转换成二进制数,是一个连续除2的过程;把要转换的数,除以2,得到商和余数,将商继续除以2,直到商为0.最后将所有余数倒序排列,得到数就是转换结果。例如:302/2=151余0151/2=75余175/2=37余137/2=18余118/2=9余09/2=4余14/2=2余02/2=1余0所以302转换为2进制,
2、结果:100101110十进制转八进制:十进制数转换成八进制的方法和转换为二进制的方法类似,唯一变化:除数由2变成8。例如:120/8=15余015/8=1余71/8=0余1所以120转换为8进制,结果为:170十进制转十六进制:十进制数转换成十六进制数的方法和转换为二进制的方法类似,唯一变化:除数由2变成16。不过,十六进制数:(10〜15)是用英文大写字母(A〜F)表示。例如:123/16=7余11所以123转换为16进制,结果为:7B二进制转十进制:二进制数转换为十进制数按权展开,第0位的权值是2的0次方,第1位的权值是2的1次方••例如:1010
3、转换成十进制数:第0位:0*2八0二0第1位:1*2八1二2第2位:0*2八2二0第3位:1*2八3二8所以转换为10进制数为:0+2+0+8二10二进制转八进制:利用421,从后往前每三位一组,缺位除补0,然后按十进制方法进行转换。例如:(11001)001二1011二3然后将结果按从下往上顶顺序书写:31二进制转十六进制:二进制和十六进制的互相转换比较重要。不过这二者的转换却不用计算;利用8421,对于任意一个4位的二进制数,都可以很快算出它对应的10进制值。例如:1111=8+4+2+1=15又因为十六进制数:10〜15用大写字母A〜F表示,所以1
4、5为F。八进制转二进制:利用421;从后往前每三位一组,缺位处用0填补,然后按十进制方法进行转化;例如:1—>0013-011然后我们将结果按从下往上的顺序书写就是:11001,那么这个11001就是八进制31的二进制形式。八进制转十进制:八进制就是逢8进1,八进制数采用0〜7这八数来表达一个数;八进制数第0位的权值为8的0次方,第1位权值为8的1次方,第2位权值为8的2次方……例如:1507第0位:7*8八0二7第1位:0*8八1二0第2位:5*8八2二32016的N次方。所以换算成十进制:7+0+320+512=839八进制转十六进制:八进制转换成十
5、六进制:有两种方法:一种是先将八进制转换成二进制,在将二进制转换成十六进制。另一种方法是将八进制转换成十进制,在将十进制转换成十六进制。十六进制转二进制:上面已经提到二进制转换成十六进制的方法,记住8421,每一位的权值,所以十六进制转成二进制就是一段四位分别转成二进制。例如:F1111,D1101,A1010,50101十六进制转八进制:十六进制转八进制也不能直接转换,需要将十六进制转换成十进制或者二进制,才能由十进制或者二进制转换成八进制。十六进制转十进制:16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这六个字母
6、来分别表示10,11,12,13,14,15。十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方••所以,在第N(N从0开始)位上,如果是是数X(X16的N次方。大于等于0,并且X小于等于15,即:F)表示的大小为X*16的N次方。例如:2AF5第0位:5*16八0=5第1位:F*16八1=240第2位:A*16八3=2560第3位:2*16八4=8192所以转换成十进制数为:10997.二、数据结构:栈:头文件Stack.h"#include#includetypedef
7、enum{FALSE,TRUE}Bool;typedefintElementType;typedefstruct{inttop;ElementType*elements;intMaxSize;}Stack;voidInitStack(Stack*,intsz);voidFreeStack(Stack*);intPush(Stack*,ElementType);ElementTypePop(Stack*);ElementTypeGetTop(Stack*);voidMakeEmepty(Stack*);BoolIsEmpty(Stack*S);BoolIs
8、Full(Stack*S);栈的关键操作:#include"stack.h"Bo
此文档下载收益归作者所有