- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
目 录
一、数的进制转换 1
二、拓扑排序(A0V网) 5
三、关键路径(A0E网) 7
一、数的进制转换
数的进制的概念:
日常生活中我们计数的方式有很多,如一年有12个月,则是12进制,一周有7天,则是7进制,等等。实际都是我们人为规定的,而平常我们用的最多的最习惯的是10进制,是因为我们古人留下来的财富,而古人是因为有10个手指便于帮助计数。需要强调的是任何一个值都可以用任何一种进制描述,但它的值是不变的,正如我们今天在一周中可以描述为星期几,在一月中描述为多少号一样。
使用R进制计数的规则:
只使用R个基数:0,1,2,……,R-1;
逢R进一,退一当R进行数的运算。
R进制数转化为十进制数
这个转化问题较简单,根据上面讲的R进制的计数规则进行展开就得到相应的十进制数的表示方法。
(anan-1……a1a0.a-1a-2……a-m)……+a1*R1+a0*R0+a-1*R-1+a-2*R-2+……+a-m*R-m
=
十进制数转化为R进制数
由于十进制数的整数与小数转化为R进制的方法不同,所以必须分开讨论。先看十进制整数的转化,再讨论十进制小数的转化,最后讨论-R进制的计数及转化问题。
十进制整数的转化
通过具体实例进行分析,如对十进制数325转化,根据原理可以按下式这样假设:
(325)10=3*102+2*101+5*100
=(anan-1……a1a0)……+a1*R1+a0*R0
=(an*Rn-1+an-1*Rn-2+……+a1)*R+a0
两边同时除以R,得到整数部分和整数部分相等,余数和余数相等,显然右边的余数就是a0,再进行同样的处理就得到a1,一直这样进行下去,直到左边的数为0是为止,由于先求出的是R进制的最低位,再按求解过程倒过来写出就得到相应的R进制数。
以R=6为例,看转化的过程:
(325)10=(1301)6
最后,得到的规律就是“除R取余”。
设:任意进制为x,十进制数为y则其算法模式是:
:
t:=t+1;
y mod x 的余数:a(t)
y:=y div x
y=0为止.
a(t)最高位到第一位a(1).
……a-m)……+a-m*R-m
=(a-1+a-2*R-1+……+a-m*R-m+1)*R-1
两边同时乘以R,等式两边的整数部分和小数部分分别相等,显然右边的整数部分就是a-1,再去掉等式的整数部分,然后进行相同的处理,就求得了a-2,一直进行下去,直到左边的值为0时或到要求的精度为止,这样就将十进制小数转化为相应的R进制数了。
以R=2为例,说明求解过程:
(0.375)10=(0.011)2
最后得到的规律就是“乘R取整”。
例1不同进制数之间实数转换的通用程序。
输入n进制的数m与要转换的p进制的输出。
如:
输入一个数m : ABC.CBA
输入此数的进制n : 16
输入要转换成的数的进制p : 2
输出:
ABC.ABC(16)=101010111100.11001011101(2)
【程序清单】
PROGRAM p1;
TYPE ss=STRING[30];
VAR m,m1,a,s:ss;
m0,n,p,i,j,t,s1,x:Integer; mm,d:LongInt;
mr:Real;
PROCEDURE Zhuan(ch:Char); {过程—数字符转换成数}
BEGIN
j:=Ord(ch)-48; {数字符转换成数}
IF ch IN [A..F] THEN j:=j-7; {数字符转换成数}
IF (j0) AND (j=n) THEN {出界输出出错信息,程序终止}
BEGIN Writeln(Data errer !); Readln; EXIT END;
END;
PROCEDURE Xiao(m:ss); {过程—小数部分的转换}
BEGIN
mr:=0; m0:=Length(m); t:=n; {初始化}
IF n=10 THEN Val(m,mr,t) ELSE {如是十进制数,就直接把数串转换成数}
FOR i:=2 TO m0 DO BEGIN {否则把m,先转换成十进制小数,m[1]是小数点}
Zhuan(m[i]); {调用字符转为数的过程}
mr:=mr+j/t; t:=t*n {按权一一展开,累加到mr中}
END;
m:=.; {再把mr
文档评论(0)