您好,欢迎访问三七文档
算法案例——进位制一、进位制1、什么是进位制?进位制是人们为了计数和运算方便而约定的记数系统。进位制是一种记数方式,用有限的数字在不同的位置表示不同的数值。可使用数字符号的个数称为基数,基数为n,即可称n进位制,简称n进制。新课讲解:比如:满二进一,就是二进制;满十进一,就是十进制;满十二进一,就是十二进制;满六十进一,就是六十进制“满几进一”就是几进制,几进制的基数就是几.基数:2、最常见的进位制是什么?除此之外还有哪些常见的进位制?请举例说明.•最常见的进位制应该是我们数学中的十进制,比如一般的数值计算,但是并不是生活中的每一种数字都是十进制的.•古人有半斤八两之说,就是十六进制与十进制的转换.•比如时间和角度的单位用六十进位制,计算“一打”数值时是12进制的。•电子计算机用的是二进制。式中1处在百位,第一个3所在十位,第二个3所在个位,5和9分别处在十分位和百分位。十进制数是逢十进一的。我们最常用最熟悉的就是十进制数,它的数值部分是十个不同的数字符号0,1,2,3,4,5,6,7,8,9来表示的。十进制:例如133.59,它可用一个多项式来表示:133.59=1*102+3*101+3*100+5*10-1+9*10-2实际上,十进制数只是计数法中的一种,但它不是唯一记数法。除了十进制数,生产生活中还会遇到非十进制的记数制。如时间:60秒为1分,60分为1小时,它是六十进制的。两根筷子一双,两只手套为一副,它们是二进制的。其它进制:二进制、七进制、八进制、十二进制、六十进制……二进制只有0和1两个数字,七进制用0~6七个数字十六进制有0~9十个数字及ABCDEF六个字母.为了区分不同的进位制,常在数的右下角标明基数,十进制一般不标注基数.例如十进制的133.59,写成133.59(10)七进制的13,写成13(7);二进制的10,写成10(2)一般地,若k是一个大于1的整数,那么以k为基数的k进制可以表示为一串数字连写在一起的形式:110()110(0,0,,,).nnknnaaaaakaaak(16)(7)(12)(2)练习:下列写法正确的是:()A、751B、751C、095D、901110()110(0,0,,,).nnknnaaaaakaaakA3、十进制的构成十进制由两个部分构成例如:3721其它进位制的数又是如何的呢?第一、它有0~9十个数字;第二、它有“数位”,即从右往左为个位、十位、百位、千位等等。(用10个数字来记数,称基数为10)01231011021071037213表示有:1个1,2个十,7个百即7个10的平方,3个千即3个10的立方十进制:“满十进一”探究:P43110()nnkaaaakk若表示一个进制数,请你把它写成各位上数字与的幂的乘积之和的形式。110()110110(10)nnknnnnaaaaakakakak其它进制数化成十进制数公式二、二进制二进制是用0、1两个数字来描述的.如11001二进制的表示方法区分的写法:11001(2)或者(11001)201234(2)212020212111001八进制呢?如7342(8)k进制呢?anan-1an-2…a1(k)?三、二进制与十进制的转换1、二进制数转化为十进制数例1:将二进制数110011(2)化成十进制数。解:根据进位制的定义可知012345)2(21212020212111001112116132151所以,110011(2)=51.110()110110(10)nnknnnnaaaaakakakak其它进制数化成十进制数公式1、将下面的二进制数化为十进制数?(1)11(2)110练习2、把其他进位制的数化为十进制数的公式是什么?例2、设计一个算法,将k进制数a(共有n位)转换为十进制数b。(1)算法步骤:第一步,输入a,k和n的值;第二步,将b的值初始化为0,i的值初始化为1;第三步,b=b+ai*ki-1,i=i+1第四步,判断in是否成立.若是,则执行第五步,否则,返回第三步;第五步,输出b的值.(2)程序框图:开始输入a,k,nb=0i=1把a的右数第i位数字赋给tb=b+t*ki-1i=i+1in?否是输出b结束(3)程序:INPUT“a,k,n=”;a,k,nb=0i=1t=aMOD10DOb=b+t*k^(i-1)a=a\10t=aMOD10i=i+1LOOPUNTILinPRINTbEND方法:除2取余法,即用2连续去除89或所得的商,然后取余数。例、把89化为二进制数解:根据“逢二进一”的原则,有89=2×44+1=2×(2×22+0)+1=2×(2×(2×11+0)+0)+1=2×(2×(2×(2×5+1)+0)+0)+15=2×2+1=2×(2×(2×(2×(22+1)+1)+0)+0)+189=1×26+0×25+1×24+1×23+0×22+0×21+1×20所以:89=1011001(2)=2×(2×(2×(23+2+1)+0)+0)+1=2×(2×(24+22+2+0)+0)+1=2×(25+23+22+0+0)+1=26+24+23+0+0+2089=2×44+144=2×22+022=2×11+011=2×5+1=2×(2×(2×(2×(2×2+1)+1)+0)+0)+1所以89=2×(2×(2×(2×(2×2+1)+1)+0)+0)+12、十进制转换为二进制注意:1.最后一步商为0,2.将上式各步所得的余数从下到上排列,得到:89=1011001(2)另解(除2取余法的另一直观写法):522212010余数11224489222201101练习将下面的十进制数化为二进制数?(1)10(2)20例1:把89化为五进制数。3、十进制转换为其它进制解:根据除k取余法以5作为除数,相应的除法算式为:所以,89=324(5)895175350423余数(2)程序框图:开始输入a,k求a除以k的商q求a除以k的余数rq=0?是否a=q将依次输出的r从右到左排列结束输出r(3)程序:INPUT“a,k=”;a,kb=0i=0DOq=a\kr=aMODkb=b+r*10^ii=i+1a=qLOOPUNTILq=0PRINTbEND练习:完成下列进位制之间的转化:(1)10231(4)=(10);(2)235(7)=(10);(3)137(10)=(6);(4)1231(5)=(7);(5)213(4)=(3);(6)1010111(2)=(4)。•1.进位制是一种记数方式,用有限的数字在不同的位置表示不同的数值。可使用数字符号的个数称为基数,基数为k,即可称k进位制,简称k进制。k进制需要使用k个数字;•2.十进制与二进制之间转换的方法;先把这个k进制数写成用各位上的数字与k的幂的乘积之和的形式,再按照十进制数的运算规则计算出结果。小结•3.十进制数转化为k进制数的方法:(除k取余法)用k连续去除该十进制数或所得的商,直到商为零为止,然后把每次所得的余数倒着排成一个数,就是相应的k进制数。课后检测:•1.十进制数使用0~9十个数字计数,那么二进制使用哪几个数字计数,八进制呢?十六进制呢?•2.k进制数的一般形式是什么?•3.一个十进制数可以表示成不同位上的数字与10的幂的乘积的形式,其它进位制的数是否也可以这样表示?如果可以,请填空•4.根据例3你能总结出将一个k进制数转化成十进制数的方法吗?你能用程序框图和程序表示这一算法吗?•5.根据例5你能总结出将一个十进制数转化成k进制数的方法吗?你能用程序框图和程序表示这一算法吗?二进制:八进制:十六进制:010,1,2,3,4,5,6,70,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F101112131415K进制数的一般形式:110nnkaaaa其中110110,,,0,0,,,nnnnaaaaNakaaak注意:最高位不能是0236(7)=10011(2)=3452(6)=110()nnkaaaa210273767432101202021212321036465626110110nnnnakakakak12019391K进制数转化成十进制数的方法:先将k进制数写成各位上数字与k的幂的乘积之和的形式,再按照十进制数的运算规则计算出结果练习:将下面的数转化成十进制数(3)10212(8)2376=104=1278方幂法在此过程中有没有反复操作的步骤——循环结构变量及其初始值循环体控制条件b=0i=1t=aMOD10b=b+t*k^(i-1)a=a\10i=i+1in或i=n121()nnkaaaa1210121nnnnakakakak=ba=(共n位)开始输入a,n,kb=0i=1①①把a的右数第i位数字赋给tb=b+t*ki-1i=i+1in?否是输出b结束程序框图INPUTa,n,kb=0i=1DOt=aMOD10b=b+t*k^(i-1)a=a\10i=i+1LOOPUNTILinPRINTbEND思考:如果不知道k进制数a有n位,那么用什么条件来控制循环十进制数化k进制数的方法:除k取余法(从下到上)练习:将137转化成6进制数为:将38转化成2进制数为:(6)345(2)100110十进制转换为二进制把49化为二进制数32122011余数61224492220010注意:1.最后一步商为0,2.将上式各步所得的余数从下到上排列,得到:49=110001(2)有没有反复执行的步骤循环结构变量及其初始值循环体控制条件b=0i=oq=a\kr=aMODkb=b+r*10^ii=i+1a=qq=0或q≠0(十进制数a转化为k进制数b)开始输入a,k求a除以k的商q求a除以k的余数r①输出全部余数r排列得到的k进制数否结束a=qq=0?是①程序框图把所得的余数依次从右到左排列INPUT“a,k=“;a,kb=0i=0DOq=a\kr=aMODkb=b+r*10^ii=i+1a=qLOOPUNTILq=0PRINTbEND程序思考?两个非十进制数之间应怎样实现转化?课堂小结1.十进制数与k进制数之间的转化方法2.体会用算法解决上述问题的过程,体验算法在解决问题中的重要作用
本文标题:算法案例--进位制
链接地址:https://www.777doc.com/doc-3987147 .html