1.3算法案例第三课时问题提出1.辗转相除法和更相减损术,是求两个正整数的最大公约数的算法,秦九韶算法是求多项式的值的算法,将这些算法转化为程序,就可以由计算机来完成相关运算.2.人们为了计数和运算方便,约定了各种进位制,这些进位制是什么概念,它们与十进制之间是怎样转化的?对此,我们从理论上作些了解和研究.知识探究(一):进位制的概念思考1:进位制是为了计数和运算方便而约定的记数系统,如逢十进一,就是十进制;每七天为一周,就是七进制;每十二个月为一年,就是十二进制,每六十秒为一分钟,每六十分钟为一个小时,就是六十进制;等等.一般地,“满k进一”就是k进制,其中k称为k进制的基数.那么k是一个什么范围内的数?思考2:十进制使用0~9十个数字,那么二进制、五进制、七进制分别使用哪些数字?思考3:在十进制中10表示十,在二进制中10表示2.一般地,若k是一个大于1的整数,则以k为基数的k进制数可以表示为一串数字连写在一起的形式:anan-1…a1a0(k).其中各个数位上的数字an,an-1,…,a1,a0的取值范围如何?思考4:十进制数4528表示的数可以写成4×103+5×102+2×101+8×100,依此类比,二进制数110011(2),八进制数7342(8)分别可以写成什么式子?110011(2)=1×25+1×24+0×23+0×22+1×21+1×207342(8)=7×83+3×82+4×81+2×80.思考5:一般地,如何将k进制数anan-1…a1a0(k)写成各数位上的数字与基数k的幂的乘积之和的形式?110()110110nnknnnnaaaaakakakak---=??+??LL思考6:在二进制中,0+0,0+1,1+0,1+1的值分别是多少?知识探究(二):k进制化十进制的算法思考1:二进制数110011(2)化为十进制数是什么数?110011(2)=1×25+1×24+0×23+0×22+1×21+1×20=32+16+2+1=51.思考2:二进制数右数第i位数字ai化为十进制数是什么数?12iia-´思考3:利用运用循环结构,把二进制数化为十进制数b的算法步骤如何设计?1210121(2)1212222nnnnnnaaaaaaaa----=??+??LL121(2)nnaaaaa-=L第二步,令b=0,i=1.第四步,判断in是否成立.若是,则输出b的值;否则,返回第三步.第一步,输入a和n的值.第三步,,i=i+1.12iibba-=+?思考4:按照上述思路,把k进制数化为十进制数b的算法步骤如何设计?121()nnkaaaaa-=L第四步,判断in是否成立.若是,则输出b的值;否则,返回第三步.第一步,输入a,k和n的值.第二步,令b=0,i=1.第三步,,i=i+1.1iibbak-=+?思考5:上述把k进制数化为十进制数b的算法的程序框图如何表示?121()nnkaaaaa-=L开始输入a,k,nb=0i=1把a的右数第i位数字赋给tb=b+t·ki-1i=i+1in?结束是输出b否思考6:该程序框图对应的程序如何表述?开始输入a,k,nb=0i=1把a的右数第i位数字赋给tb=b+t·ki-1i=i+1in?结束是输出b否INPUTa,k,nb=0i=1t=aMOD10DOb=b+t*k∧(i-1)a=a/10t=aMOD10i=i+1LOOPUNTILinPRINTbEND例1将下列各进制数化为十进制数.(1)10303(4);(2)1234(5).理论迁移10303(4)=1×44+3×42+3×40=307.1234(5)=1×53+2×52+3×51+4×50=194.例2已知10b1(2)=a02(3),求数字a,b的值.所以2b+9=9a+2,即9a-2b=7.10b1(2)=1×23+b×2+1=2b+9.a02(3)=a×32+2=9a+2.故a=1,b=1.1.k进制数使用0~(k-1)共k个数字,但左侧第一个数位上的数字(首位数字)不为0.小结作业121()nnkaaaa-L2.用表示k进制数,其中k称为基数,十进制数一般不标注基数.3.把k进制数化为十进制数的一般算式是:121()1210121nnknnnnaaaaakakakak----=??+??LL