《算法案例第三课时ppt.ppt》由会员分享,可在线阅读,更多相关《算法案例第三课时ppt.ppt(20页珍藏版)》请在优知文库上搜索。
1、算法案例(第三课时)(第三课时)半斤半斤=八两八两 我们常见的数字都是十进制的我们常见的数字都是十进制的,比如一般的比如一般的数值计算,但是并不是生活中的每一种数数值计算,但是并不是生活中的每一种数字都是十进制的字都是十进制的.古人有半斤八两之说,就是十六进制与十进古人有半斤八两之说,就是十六进制与十进制的转换制的转换.1 1、什么是进位制?、什么是进位制?2 2、最常见的进位制是什么?除此之外还有哪、最常见的进位制是什么?除此之外还有哪些常见的进位制?请举例说明些常见的进位制?请举例说明进位制是人们为了计数和运算方便而约定的记数系统。进位制是人们为了计数和运算方便而约定的记数系统。进位制是一
2、种记数方式,用有限的进位制是一种记数方式,用有限的数字数字在不同的位在不同的位置表示不同的数值。可使用数字符号的个数称为基置表示不同的数值。可使用数字符号的个数称为基数,基数为数,基数为n n,即可称,即可称n n进位制,简称进位制,简称n n进制。进制。比如时间和角度的单位用六十进位制比如时间和角度的单位用六十进位制,计算计算“一打一打”数值时是数值时是12进制的。进制的。电子计算机用的是二进制电子计算机用的是二进制 3 3、我们了解十进制吗?所谓的十进制,它是如何构成的?、我们了解十进制吗?所谓的十进制,它是如何构成的?十进制由两个部分构成十进制由两个部分构成例如:例如:3721其它进位制
3、的数又是如何的呢?其它进位制的数又是如何的呢?第一、它有第一、它有0 09 9十个数字;十个数字;第二、它有第二、它有“数位数位”,即,即从右往左从右往左为个位、十位、为个位、十位、百位、千位等等。百位、千位等等。(用用10个数字来记数,称基数为个数字来记数,称基数为10)01231011021071037213表示有:表示有:1个个1,2个十,个十,7个百即个百即7个个10的平方,的平方,3个千即个千即3个个10的立方的立方十进制:十进制:“满十进一满十进一”二、二、二进制二进制二进制是用二进制是用0 0、1 1两个数字来描述的如两个数字来描述的如1100111001二进制的表示方法二进制的
4、表示方法区分的写法:区分的写法:1100111001(2 2)或者或者(11001)(11001)2 201234(2)212020212111001八进制呢?八进制呢?如如73427342(8)(8)k k进制呢?进制呢?a an na an-1n-1a an-2n-2aa1(k)1(k)?三、二进制与十进制的转换三、二进制与十进制的转换1 1、二进制数转化为十进制数、二进制数转化为十进制数例例1 1 将二进制数将二进制数110011110011(2)(2)化成十进制数化成十进制数解:解:根据进位制的定义可知根据进位制的定义可知012345)2(21212020212111001112116
5、132151所以,所以,110011110011(2 2)=51=51将下面的二进制数化为十进制数?将下面的二进制数化为十进制数?(1)11(2)110练习练习b=ab=a1 1k k0 0b=ab=a2 2k k1 1+b+bb=ab=a3 3k k2 2+b bb=ab=an nk kn-1 n-1+b+b将将k进制数进制数a转换为十进制数转换为十进制数(共有共有 n位位)的程序的程序a=aa=an na an-1n-1 a a3 3a a2 2a a1(k)1(k)=a=an nk k(n-1)(n-1)+a+an-1n-1k k(n-2)(n-2)+a+a3 3k k2 2+a+a2
6、2k k1 1+a a1 1k k0 0i=1i=1i=i+1i=i+1b=ab=ai ik ki-1i-1+b+b开始开始输入输入a,k,nb=0i=1把把a的右数第的右数第i位数字赋给位数字赋给tb=b+t*ki-1i=i+1in?否否是是输出输出b结束结束INPUT a,k,ni=1b=0t=a MOD 10DO b=b+t*k(i-1)a=a10 t=a MOD 10 i=i+1LOOP UNTIL inPRINT bENDINPUT a,k,ni=1b=0t=a MOD 10WHILE inPRINT bENDINPUT a,k,nINPUT a,k,ni=1i=1b=0b=0WHI
7、LE i=nWHILE i=nt=GET ait=GET aib=tb=t*k(i-1)+bk(i-1)+bi=i+1i=i+1WENDWENDPRINT bPRINT bENDENDa ai i=GET ai=GET aiGETGET函数用于取出函数用于取出a a的右数第的右数第i i位数位数(除除2取余法:用取余法:用2连续去除连续去除89或所得的商,然后取余数或所得的商,然后取余数)例例2 把把89化为二进制数化为二进制数解:解:根据根据“逢二进一逢二进一”的原则,有的原则,有892441 2(2220)+1 2(2(2110)+0)+1 2(2(2(2 51)+0)+0)+15 2 2
8、12(2(2(2(221)1)0)0)189126025124123022021120所以:所以:89=1011001(2)2(2(2(2321)0)0)12(2(242220)0)12(2523+2200)12624+23002089244144 222022 211011 2 51 2(2(2(2(2 21)+1)+0)+0)+1所以所以892(2(2(2(2 2 1)1)0)0)12、十进制转换为二进制、十进制转换为二进制注意:注意:1.1.最后一步商为最后一步商为0 0,2.2.将上式各步所得的余数将上式各步所得的余数从下到上排列从下到上排列,得到:,得到:89=101100189=1
9、011001(2 2)2 2、十进制转换为二进制、十进制转换为二进制例例2 2 把把8989化为二进制数化为二进制数5 52 22 22 21 12 20 01 10 0余数余数11112222444489892 22 22 22 20 01 11 10 01 1练习练习将下面的十进制数化为二进制数?将下面的十进制数化为二进制数?(1 1)1010(2 2)2020例例3 3 把把8989化为五进制数化为五进制数3 3、十进制转换为其它进制、十进制转换为其它进制解:解:根据根据除除k k取余法取余法以以5 5作为除数,相应的除法算式为:作为除数,相应的除法算式为:所以,所以,89=32489=
10、324(5 5)89895 517175 53 35 50 04 42 23 3余数余数开始开始输入输入a,k求求a除以除以k的商的商q求求a除以除以k的余数的余数r将依次输出的将依次输出的r从右到左排列从右到左排列否否结束结束输出输出ra=qq=0?是是设计将十进制数设计将十进制数a转换转换为为k进制数进制数(共有共有 n位位)的的程序程序(除除k k取余法取余法)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练习:练习:完成下列进位制之间的转化:完成下列进位制之间的转化:
11、(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进制数。进制数。