一、进位制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,,,).nnknnaaaaakaaak3、十进制的构成十进制由两个部分构成例如:3721其它进位制的数又是如何的呢?第一、它有0~9十个数字;第二、它有“数位”,即从右往左为个位、十位、百位、千位等等。(用10个数字来记数,称基数为10)01231011021071037213表示有:1个1,2个十,7个百即7个10的平方,3个千即3个10的立方十进制:“满十进一”探究:P43110()nnkaaaakk若表示一个进制数,请你把它写成各位上数字与的幂的乘积之和的形式。110()110110(10)nnknnnnaaaaakakakak其它进制数化成十进制数公式例1、设计一个算法,将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**上面的程序如采用get函数,可简化为:INPUTa,k,ni=1b=0WHILEi=nt=GETa[i]b=t*k^(i-1)+bi=i+1WENDPRINTbEND备注:GET函数用于取出a的右数第i位数例:例1在十进制数中,3058.72可表示为:3058.72==3×103+0×102+5×101+8×100+7×10-1+2×10-2•例2在二进制数中,10111.01可表示为:10111.01==1×24+0×23+1×22+1×21+1×20+0×2-1+1×2-2例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知识探究(一):除k取余法思考1:二进制数101101(2)化为十进制数是什么数?十进制数89化为二进制数是什么数?101101(2)=25+23+22+1=45.89=2×(2×(2×(2×(2×2+1)+1)+0)+0)+1=1×26+0×25+1×24+1×23+0×22+0×21+1×20=1011001(2).思考2:上述化十进制数为二进制数的算法叫做除2取余法,转化过程有些复杂,观察下面的算式你有什么发现吗?21222502112222442891001101余数思考3:上述方法也可以推广为把十进制数化为k进制数的算法,称为除k取余法,那么十进制数191化为五进制数是什么数?0515753851911321余数191=1231(5)思考4:若十进制数a除以2所得的商是q0,余数是r0,即a=2·q0+r0;q0除以2所得的商是q1,余数是r1,即q0=2·q1+r1;……qn-1除以2所得的商是0,余数是rn,即qn-1=rn,那么十进制数a化为二进制数是什么数?a=rnrn-1…r1r0(2)知识探究(二):十进制化k进制的算法思考1:根据上面的分析,将十进制数a化为二进制数的算法步骤如何设计?第四步,若q≠0,则a=q,返回第二步;否则,输出全部余数r排列得到的二进制数.第一步,输入十进制数a的值.第二步,求出a除以2所得的商q,余数r.第三步,把所得的余数依次从右到左排列.思考2:利用除k取余法,将十进制数a化为k进制数的算法步骤如何设计?第四步,若q≠0,则a=q,返回第二步;否则,输出全部余数r排列得到的k进制数.第一步,输入十进制数a和基数k的值.第二步,求出a除以k所得的商q,余数r.第三步,把所得的余数依次从右到左排列.思考3:将除k取余法的算法步骤用程序框图如何表示?开始输入a,k求a除以k的商q求a除以k的余数r把所得的余数依次从右到左排列a=qq=0?结束输出全部余数r排列得到的k进制数是否思考4:该程序框图对应的程序如何表述?开始输入a,k求a除以k的商q求a除以k的余数r把所得的余数依次从右到左排列a=qq=0?结束输出全部余数r排列得到的k进制数是否INPUTa,kb=0i=0DOq=a/kr=aMODkb=b+r*10∧ii=i+1a=qLOOPUNTILq=0PRINTbEND十进制数转换为K进制数整数的转换可采用除K取余法,即把要转换的十进制数的整数部分不断除以K,并记下每次除所得余数,直到商为0为止,将所得余数,从最后一次除得余数读起,就是这个十进制整数所对应的K进制整数。小数部分的转换采用乘K取整法,被转换的小数部分,每次与K相乘后,所得乘积的整数部分就为对应的K进制数,将所得小数从第一次乘得整数读起,就是这个十进制小数所对应的K进制小数。小结作业1.利用除k取余法,可以把任何一个十进制数化为k进制数,并且操作简单、实用.2.通过k进制数与十进制数的转化,我们也可以将一个k进制数转化为另一个不同基数的k进制数.小结110()110(0,0,,,).nnknnaaaaakaaak一、进位制110()110110(10)nnknnnnaaaaakakakak1、其它进制数化成十进制数公式二、各进制数之间的转化(只限整数)2、十进制数化成k进制数除k取余法