欢迎来到天天文库
浏览记录
ID:36176359
大小:1.63 MB
页数:33页
时间:2019-05-06
《1.3.3《算法案例——进位制》(新人教a版必修3)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、主讲老师潘学国算法初步1.3算法案例提出问题人们为了计数和运算方便,约定了各种进位制,这些进位制是什么概念,它们与十进制之间是怎样转化的?对此,我们从理论上作些了解和研究.进位制进位制是人们为了计数和运算方便而约定的记数系统,如满二进一,就是二进制;满十进一,就是十进制;每七天为一周,就是七进制;每十二个月为一年,就是十二进制,每六十秒为一分钟,每六十分钟为一个小时,就是六十进制;等等。一般地,“满几进一”就是几进制,几进制的基数就是几。进位制基数都是大于1的整数。思考:基数的范围是什么?二进制可使用的数字有0和1,基数是2;八
2、进制可使用的数字有0~7,基数是8;十六进制可使用的数字或符号有0~9等10个数字以及A~F等6个字母(规定字母A~F对应10~15),十六进制的基数是16.等等。思考:十进制使用0~9十个数字,那么其它进制分别使用哪些数字?计数时,几个数字排成一行,从右起,位数依次增大。注意:为了区分不同的进位制,常在数字的右下角标明基数.如111001(2)表示二进制数,34(5)表示5进制数.十进制数一般不标注基数.思考:k进制如何计数?思考:一般地,若k是一个大于1的整数,则以k为基数的k进制数可以表示为一串数字连写在一起的形式:ana
3、n-1…a1a0(k).其中各个数位上的数字an,an-1,…,a1,a0的取值范围如何?an,an-1,…,a1,a0ϵN,04、各位上数字与k的幂的乘积之和的形式?anan-1…a1a0(k)=an×kn+an-1×kn-1+…+a1×k1+a0×k0探究:二进制只用0和1两个数字,这正好与电路的通和断两种状态相对应,因此计算机内部都使用二进制。计算机在进行数的运算时,先把接收到的数转化为二进制数进行运算,再把运算结果转化为十进制数输出。十进制数与其它进位制数是怎样转化的呢?下面,我们用例子来说明。例1:把二进制数110011(2)化为十进制数。110011(2)=1×25+1×24+0×23+0×22+1×21+1×20=32+16+2+1=51.练习5、:将下列各进制数化为十进制数.(1)10303(4);(2)1234(5);(3)C7A16(16)10303(4)=1×44+3×42+3×40=307.1234(5)=1×53+2×52+3×51+4×50=194.C7A16(16)=12×164+7×163+10×162+1×161+6×160=817686.第四步,判断i>n是否成立.若是,则输出b的值;否则,返回第三步.第一步,输入a,k和n的值;第二步,令b=0,i=1;思考:如何改进上述算法,把k进制数anan-1…a1a0(k)化为十进制数?第三步,b=b+ai6、*ki-1,i=i+1;例2:设计一个算法,把k进制数a(共有n位)化为十进制数b?开始输入a,k,nb=0i=1把a的右数第i位数字赋给tb=b+t·ki-1i=i+1i>n?结束是输出b否程序框图:程序:INPUTa,k,nb=0i=1t=aMOD10DOb=b+t*k∧(i-1)a=a10t=aMOD10i=i+1LOOPUNTILi>nPRINTbEND例3:已知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×37、2+2=9a+2.故a=1,b=1.利用k进制数化十进制数的一般算式,可以构造算法,设计程序,通过计算机就能把任何一个k进制数化为十进制数。在实际应用中,我们还需要把任意一个十进制数化为k进制数的算法,对此,我们作些理论上的探讨。例4:把89化为二进制的数.分析:把89化为二进制的数,需想办法将89先写成如下形式。89=an×2n+an-1×2n-1+…+a1×21+a0×20.89=64+16+8+1=1×26+0×25+1×24+1×23+0×22+0×21+1×20=1011001(2).如果数太大,我们是无法这样凑出来的8、,怎么办?89=44×2+1,44=22×2+0,22=11×2+0,11=5×2+1,5=2×2+1,可以用2连续去除89或所得商(一直到商为0为止),然后取余数------除2取余法.2=1×2+0,1=0×2+1.89=44×2+1,=(22×2+0)×2
4、各位上数字与k的幂的乘积之和的形式?anan-1…a1a0(k)=an×kn+an-1×kn-1+…+a1×k1+a0×k0探究:二进制只用0和1两个数字,这正好与电路的通和断两种状态相对应,因此计算机内部都使用二进制。计算机在进行数的运算时,先把接收到的数转化为二进制数进行运算,再把运算结果转化为十进制数输出。十进制数与其它进位制数是怎样转化的呢?下面,我们用例子来说明。例1:把二进制数110011(2)化为十进制数。110011(2)=1×25+1×24+0×23+0×22+1×21+1×20=32+16+2+1=51.练习
5、:将下列各进制数化为十进制数.(1)10303(4);(2)1234(5);(3)C7A16(16)10303(4)=1×44+3×42+3×40=307.1234(5)=1×53+2×52+3×51+4×50=194.C7A16(16)=12×164+7×163+10×162+1×161+6×160=817686.第四步,判断i>n是否成立.若是,则输出b的值;否则,返回第三步.第一步,输入a,k和n的值;第二步,令b=0,i=1;思考:如何改进上述算法,把k进制数anan-1…a1a0(k)化为十进制数?第三步,b=b+ai
6、*ki-1,i=i+1;例2:设计一个算法,把k进制数a(共有n位)化为十进制数b?开始输入a,k,nb=0i=1把a的右数第i位数字赋给tb=b+t·ki-1i=i+1i>n?结束是输出b否程序框图:程序:INPUTa,k,nb=0i=1t=aMOD10DOb=b+t*k∧(i-1)a=a10t=aMOD10i=i+1LOOPUNTILi>nPRINTbEND例3:已知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×3
7、2+2=9a+2.故a=1,b=1.利用k进制数化十进制数的一般算式,可以构造算法,设计程序,通过计算机就能把任何一个k进制数化为十进制数。在实际应用中,我们还需要把任意一个十进制数化为k进制数的算法,对此,我们作些理论上的探讨。例4:把89化为二进制的数.分析:把89化为二进制的数,需想办法将89先写成如下形式。89=an×2n+an-1×2n-1+…+a1×21+a0×20.89=64+16+8+1=1×26+0×25+1×24+1×23+0×22+0×21+1×20=1011001(2).如果数太大,我们是无法这样凑出来的
8、,怎么办?89=44×2+1,44=22×2+0,22=11×2+0,11=5×2+1,5=2×2+1,可以用2连续去除89或所得商(一直到商为0为止),然后取余数------除2取余法.2=1×2+0,1=0×2+1.89=44×2+1,=(22×2+0)×2
此文档下载收益归作者所有