《13《算法案例4》(新人教A版必修3).ppt》由会员分享,可在线阅读,更多相关《13《算法案例4》(新人教A版必修3).ppt(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、v主讲老师 潘学国第四课时第四课时 利用利用k进制数化十进制数的一般进制数化十进制数的一般算式,可以构造算法,设计程序,算式,可以构造算法,设计程序,通过计算机就能把任何一个通过计算机就能把任何一个k进制数进制数化为十进制数化为十进制数.在实际应用中,我们在实际应用中,我们还需要把任意一个十进制数化为还需要把任意一个十进制数化为k进进制数的算法,对此,我们作些理论制数的算法,对此,我们作些理论上的探讨上的探讨.问题提出问题提出例例1: 把把89化为二进制的数化为二进制的数.分析分析: 把把89化为二进制的数,需想办法将化为二进制的数,需想办法将89先写成如下形式。先写成如下形式。89=an2n
2、+an-12n-1+a121+a020 .89=64+16+8+1=126+025+124 +123+022+021+120 =1011001(2).如果数太大如果数太大,我们是无法这样凑出来的我们是无法这样凑出来的,怎么办怎么办?89=442+1, 44=222+0, 22=112+0, 11=52+1, 5=22+1, 可以用可以用2连续去除连续去除89或所得商或所得商(一直到商为一直到商为0为止为止),然后取余数然后取余数 - 除除2取余法取余法.2=12+0, 1=02+1. 89=442+1, =(222+0)2+1 =(112+0)2+0)2+1 =(52+1)2+0)2+0)2+
3、1 =(22+1)2+1)2+0) 2+0)2+1 =(12)+0)2+1)2+1)2+0) 2+0)2+1=126+025+124+123+022+021+120=1011001(2).44 1我们可以用下面的除法算式表示除我们可以用下面的除法算式表示除2取余法取余法:289 余数余数222 0211 025 122 121 020 1把算式中各步所得的余数把算式中各步所得的余数从下到上排列从下到上排列,得到得到89=1011001(2).这种方法也可以推广为把这种方法也可以推广为把十进制数化为十进制数化为k进制数的进制数的算法算法,称为称为除除k取余法取余法.练习练习: :十进制数十进制数
4、191191化为五进制数是什么数?化为五进制数是什么数?0515753851911321余数余数191=1231(5)思考思考:若十进制数若十进制数a除以除以2所得的商是所得的商是q0,余数,余数是是r0,即,即a=2q0+ r0;q0除以除以2所得的商是所得的商是q1,余数是余数是r1,即,即q0=2q1+ r1; qn-1除以除以2所得的商是所得的商是0,余数是,余数是rn, 即即qn-1= rn,那么十进制数那么十进制数a化为二进制数是什么数?化为二进制数是什么数?a=rnrn-1r1r0(2)知识探究知识探究( (二二):):十进制化十进制化k k进制的算法进制的算法 思考思考1:根据
5、上面的分析,将十进制数根据上面的分析,将十进制数a a化为二进化为二进制数的算法步骤如何设计?制数的算法步骤如何设计?第四步,若第四步,若q0,则,则a=q,返回第二步;否则,返回第二步;否则,输出全部余数输出全部余数r排列得到的二进制数排列得到的二进制数.第一步,输入十进制数第一步,输入十进制数a a的值的值. .第二步,求出第二步,求出a除以除以2所得的商所得的商q,余数,余数r.第三步,把所得的余数依次从右到左排列第三步,把所得的余数依次从右到左排列. .思考思考2:利用除利用除k取余法,将十进制数取余法,将十进制数a化为化为k进进制数的算法步骤如何设计?制数的算法步骤如何设计?第四步,
6、若第四步,若q0,则,则a=q,返回第二步;否则,返回第二步;否则,输出全部余数输出全部余数r排列得到的排列得到的k进制数进制数.第一步,输入十进制数第一步,输入十进制数a和基数和基数k的值的值.第二步,求出第二步,求出a除以除以k所得的商所得的商q,余数,余数r.第三步,把所得的余数依次从右到左排列第三步,把所得的余数依次从右到左排列.思考思考3:将除将除k取余法的算法步骤用程序框图如何取余法的算法步骤用程序框图如何表示?表示? 开始开始输入输入a,k求求a除以除以k的商的商q求求a除以除以k的余数的余数r把所得的余数依次从右到左排列把所得的余数依次从右到左排列a=qq=0?结束结束输出全部
7、余数输出全部余数r排排列得到的列得到的k进制数进制数是是否否思考思考4:该程序框图对应的程序如何表述?该程序框图对应的程序如何表述?开始开始输入输入a,k求求a除以除以k的商的商q求求a除以除以k的余数的余数r把所得的余数依次从右到左排列把所得的余数依次从右到左排列a=qq=0?结束结束输出全部余数输出全部余数r排排列得到的列得到的k进制数进制数是是否否INPUT a,kb=0i=0DOq=akr=a MOD kb=b+r*10ii=i+1a=qLOOP UNTIL q=0PRINT bEND理论迁移理论迁移 例例2:将十进制数将十进制数458分别转化为分别转化为四进制数和六进制数四进制数和六
8、进制数.041474284114445822031余数余数06261267664582402余数余数458=13022(4)=2042(6)例例3:将五进制数将五进制数30241(5)转化为七进制数转化为七进制数. 30241(5)=354+252+45+1=1946. 0757397278719460545余数余数30241(5)=5450(7) 课时小结课时小结: : 1.利用除利用除k取余法,可以把任取余法,可以把任何一个十进制数化为何一个十进制数化为k进制数,并进制数,并且操作简单、实用且操作简单、实用. 2.通过通过k进制数与十进制数的进制数与十进制数的转化,我们也可以将一个转化,我们也可以将一个k进制数进制数转化为另一个不同基数的转化为另一个不同基数的k进制数进制数.1: P45 练习练习32: P48 A组组 3(2)()(4)3:资料:资料作业布置作业布置