《2012高考数学一轮复习:134《算法案例——十进制化k.ppt》由会员分享,可在线阅读,更多相关《2012高考数学一轮复习:134《算法案例——十进制化k.ppt(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1.3 1.3 算法案例算法案例 第四课时第四课时 问题提出问题提出 1.1.“满几进一满几进一”就是几进制,就是几进制,k k进制进制使用哪几个数字,使用哪几个数字,k k进制数化为十进制数进制数化为十进制数的一般算式是什么?的一般算式是什么?2.2.利用利用k k进制数化十进制数的一般算进制数化十进制数的一般算式,可以构造算法,设计程序,通过计式,可以构造算法,设计程序,通过计算机就能把任何一个算机就能把任何一个k k进制数化为十进制进制数化为十进制数数.在实际应用中,我们还需要把任意一在实际应用中,我们还需要把任意一个十进制数化为个十进制数化为k k进制数的算法,对此,进制数的算法,对此
2、,我们作些理论上的探讨我们作些理论上的探讨.例例1:把把89化为二进制的数化为二进制的数.分析分析:把把89化为二进制的数化为二进制的数,需想办法将需想办法将89先写成如下形式先写成如下形式89=an2n+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=12+0,1=02+1,89=442+1,44=222+0,22=112+
3、0,11=52+1,5=22+1,89=442+1,=(222+0)2+1 =(112+0)2+0)2+1 =(52+1)2+0)2+0)2+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).可以用可以用2连续去除连续去除89或所得商或所得商(一直到商为一直到商为0为止为止),然后取余数然后取余数-除除2取余法取余法.2=12+0,1=02+1,44 1我们可以用下面的除法算式表示除我们可以用下面的除法算式表示除2取余法取余法:289 余数余数222 0211
4、025 122 121 020 1把算式中各步所得的余数把算式中各步所得的余数从下到上排列从下到上排列,得到得到89=1011001(2).这种方法也可以推广为把这种方法也可以推广为把十进制数化为十进制数化为k进制数的进制数的算法算法,称为除称为除k取余法取余法.知识探究知识探究(一一):):除除k k取余法取余法练习练习:十进制数十进制数191191化为五进制数是什么化为五进制数是什么数?数?0515753851911321余数余数191=1231191=1231(5 5)思考思考:若十进制数若十进制数 a a除以除以2 2所得的商是所得的商是q q0 0,余数是,余数是r r0 0,即即a
5、=2a=2q q0 0+r+r0 0;q q0 0除以除以2 2所得的商是所得的商是q q1 1,余数是,余数是r r1 1,即即q q0 0=2=2q q1 1+r+r1 1;q qn-1n-1除以除以2 2所得的商是所得的商是0 0,余数是,余数是r rn n,即即q qn-1n-1=r=rn n,那么十进制数那么十进制数a a化为二进制数是什么数?化为二进制数是什么数?a=ra=rn nr rn-1n-1rr1 1r r0(2)0(2)知识探究知识探究(二二):):十进制化十进制化k k进制的算法进制的算法 思考思考1:1:根据上面的分析,将十进制数根据上面的分析,将十进制数a a化化为
6、二进制数的算法步骤如何设计?为二进制数的算法步骤如何设计?第四步,若第四步,若q0q0,则,则a=qa=q,返回第二步;,返回第二步;否则,输出全部余数否则,输出全部余数r r排列得到排列得到 的二进制数的二进制数.第一步,输入十进制数第一步,输入十进制数a a的值的值.第二步,求出第二步,求出a a除以除以2 2所得的商所得的商q q,余数,余数r.r.第三步,把所得的余数依次从右到左排列第三步,把所得的余数依次从右到左排列.思考思考2:2:利用除利用除k k取余法,将十进制数取余法,将十进制数a a化为化为k k进制数的算法步骤如何设计?进制数的算法步骤如何设计?第四步,若第四步,若q0q
7、0,则,则a=qa=q,返回第二步;,返回第二步;否则,输出全部余数否则,输出全部余数r r排列得到排列得到 的的k k进制数进制数.第一步,输入十进制数第一步,输入十进制数a a和基数和基数k k的值的值.第二步,求出第二步,求出a a除以除以k k所得的商所得的商q q,余数,余数r.r.第三步,把所得的余数依次从右到左排第三步,把所得的余数依次从右到左排 列列.思考思考3:3:将除将除k k取余法的算法步骤用程序框取余法的算法步骤用程序框图如何表示?图如何表示?开始开始输入输入a,k求求a除以除以k的商的商q求求a除以除以k的余数的余数r把所得的余数依次从右到左排列把所得的余数依次从右到
8、左排列a=qq=0?结束结束输出全部余数输出全部余数r排排列得到的列得到的k k进制数进制数是是否否思考思考4:4:该程序框图对应的程序如何表述?该程序框图对应的程序如何表述?开始开始输入输入a,k求求a除以除以k的商的商q求求a除以除以k的余数的余数r把所得的余数依次从右到左排列把所得的余数依次从右到左排列a=qq=0?结束结束输出全部余数输出全部余数r排排列得到的列得到的k k进制数进制数是是否否INPUT aINPUT a,k kb=0b=0i=0i=0DODOq=akq=akr=a MOD kr=a MOD kb=b+r*10b=b+r*10i ii=i+1i=i+1a=qa=qLOO
9、P UNTIL q=0LOOP UNTIL q=0PRINT bPRINT bENDEND理论迁移理论迁移 例例1 1 将十进制数将十进制数458458分别转化为四进分别转化为四进制数和六进制数制数和六进制数.041474284114445822031余数余数06261267664582402余数余数458=13022458=13022(4 4)=2042=2042(6 6)例例2 2 将五进制数将五进制数3024130241(5 5)转化为七转化为七进制数进制数.3024130241(5 5)=35=354 4+25+252 2+45+1=1946.+45+1=1946.0757397278719460545余数余数3024130241(5 5)=5450=5450(7 7)小结作业小结作业 1.1.利用除利用除k k取余法,可以把任何一个取余法,可以把任何一个十进制数化为十进制数化为k k进制数,并且操作简单、进制数,并且操作简单、实用实用.2.2.通过通过k k进制数与十进制数的转化,进制数与十进制数的转化,我们也可以将一个我们也可以将一个k k进制数转化为另一个进制数转化为另一个不同基数的不同基数的k k进制数进制数.作业:作业:P45P45练习:练习:3.3.P48P48习题习题1.3A1.3A组:组:3(2)3(2),(4).(4).