《1.3.3算法案例--进位制》由会员分享,可在线阅读,更多相关《1.3.3算法案例--进位制(4页珍藏版)》请在金锄头文库上搜索。
1、高二学案1.3.3算法案例进位制课标要求:了解各种进位制与十进制之间转换的规律,会利用各种进位制与十进制之间的联系进行各种进位制之间的转换。学习重点:各进位制表示数的方法及各进位制之间的转换。一复习引入在日常生活中,我们最熟悉、最常用的是十进制,据说这与古人曾以手指计数有关,爱好天文学的古人也曾经采用七进制、十二进制、六十进制,至今我们仍然使用一周七天、一年十二个月、一小时六十分的历法.今天我们来学习一下进位制二研探新知探究一: 进位制的概念思考1:进位制是为了计数和运算方便而约定的记数系统,如逢十进一,就是十进制;每七天为一周,就是七进制;每十二个月为一年,就是十二进制,每六十秒为一分钟,每
2、六十分钟为一个小时,就是六十进制;等等.一般地,“满进一”就是进制,其中称为进制的基数.那么是一个什么范围内的数?思考2:十进制使用09十个数字,那么二进制、五进制、七进制分别使用哪些数字?思考3:在十进制中10表示十,在二进制中10表示2.一般地,若是一个大于1的整数,则以为基数的进制数可以表示为一串数字连写在一起的形式:思考4:十进制数4528表示的数可以写成,依此类比,二进制数,八进制数 分别可以写成什么式子?思考5:一般地,如何将进制数 写成各数位上的数字与基数的幂的乘积之和的形式?思考6:在二进制中,0+0,0+1,1+0,1+1的值分别是多少?探究二: 进制化十进制的算法思考1:【
3、例3】二进制数110011(2)化为十进制数是什么数?思考2:二进制数右数第i位数字化为十进制数是什么数?思考3:【例4】运用循环结构,把二进制数 化为十进制数b的算法步骤如何设计?算法分析:从例3的计算过程可以看出,计算k进制数a的右数第i位数字ai与ki-1的乘积aiki-1,再将其累加,这是一个重复操作的步骤.所以,可以用循环结构来构造算法. 算法步骤如下:第一步,输入a,k和n的值.第二步,将b的值初始化为0,i的值初始化为1.第三步,b=b+aiki-1,i=i+1.第四步,判断in是否成立.若是,则执行第五步;否则,返回第三步.第五步,输出b的值.程序框图如右图:思考6:该程序框图
4、对应的程序如何表述?其中各个数位上的数字 , ,,的取值范围如何?INPUT “a,k,n=”;a,k,nb=0i=1t=a MOD 10DO b=b+t*k(i-1) a=a10 t=a MOD 10 i=i+1LOOP UNTIL inPRINT bEND探究三:除取余法思考1:二进制数101101(2)化为十进制数是什么数?【例5】十进制数89化为二进制数是什么数?解:根据二进制数“满二进一”的原则,可以用2连续去除89或所得商,然后取余数.具体计算方法如下:因为89=244+1,44=222+0,22=211+0,11=25+1,5=22+1,2=21+0,1=20+1,所以89=2(
5、2(2(2(22+1)+1)+0)+0)+1=2(2(2(2(22+1)+1)+0)+0)+1=126+025+124+123+022+021+120=1 011 001(2).思考2:上述化十进制数为二进制数的算法叫做除2取余法,转化过程有些复杂,观察下面的算式你有什么发现吗?把上式中各步所得的余数从下到上排列,得到89=1 011 001(2).思考3:上述方法也可以推广为把十进制数化为 进制数的算法,称为除取余法。十进制数191化为五进制数是什么数?思考4:根据上面分析,【例6】利用除取余法,将十进制数a化为进制数的算法步骤如何设计?算法分析:从例5的计算过程可以看出如下的规律: 若十制
6、数a除以k所得商是q0,余数是r0,即a=kq0+r0,则r0是a的k进制数的右数第1位数. 若q0除以k所得的商是q1,余数是r1,即q0=kq1+r1,则r1是a的k进制数的左数第2位数. 若qn-1除以k所得的商是0,余数是rn,即qn-1=rn,则rn是a的k进制数的左数第1位数. 这样,我们可以得到算法步骤如下: 第一步,给定十进制正整数a和转化后的数的基数k. 第二步,求出a除以k所得的商q,余数r. 第三步,把得到的余数依次从右到左排列. 第四步,若q0,则a=q,返回第二步;否则,输出全部余数r排列得到的k进制数.思考5:将除取余法的算法步骤用程序框图如何表示?程序框图如右图:INPUT “a,k=”;a,kb=0i=0DO q=ak r=a MOD k b=b+r*10i i=i+1 a=qLOOP UNTIL q=0PRINT bEND思考6:框图对应的程序如何表述?三随堂练习P45 练习 3. 四知识小结(1)理解算法与进位制的关系.(2)熟练掌握各种进位制之间转化