1、案例三 进位制,问题2十进制数3721中的每一个数表示什么意思?这个数能写出什么形式?,3721=3103+7102+2101+1100.,C7A16(16)=12164+7163+10162+1161+6160,问题1什么叫做基数?,一般地,若k是一个大于1的整数,那么以k为基数的k进制数可以表示为一串数字连写在一起的形式,anan-1a1a0(k) (0ank,0an-1,a1,a0k),意思是:(1)第一个数字an不能等于0; (2)每一个数字an,an-1,a1,a0都须小于k.,k进制的数也可以表示成不同位上数字与基数k的幂的乘积之和的形式,即,anan-1a1a0(k)=ankn+
2、an-1kn-1+a1k1+a0k0 .,注意这是一个n+1位数.,问题3二进制只用0和1两个数字,这正好与电路的通和断两种状态相对应,因此计算机内部都使用二进制.计算机在进行数的运算时,先把接受到的数转化成二进制数进行运算,再把运算结果转化为十进制数输出.那么二进制数与十进制数之间是如何转化的呢?,例1:把二进制数110011(2)化为十进制数.,分析:先把二进制数写成不同位上数字与2的幂的乘积之和的形式,再按照十进制数的运算规则计算出结果.,解:110011(2)=125+124+023+022+121+120=132+116+12+1=51.,问题4你会把三进制数10221(3)化为十进
3、制数吗?,解:10221(3)=134+033+232+231+130=81+18+6+1=106.,k进制数转化为十进制数的方法,先把k进制的数表示成不同位上数字与基数k的幂的乘积之和的形式,即,anan-1a1a0(k) =ankn+an-1kn-1+a1k1+a0k0 .,再按照十进制数的运算规则计算出结果.,例2.设计一个算法,把k进制数a(共有n位)化为十进制数b.,开始,输入a,k,n,b=0,i=1,把a的右数第i位数字赋给t,b=b+t*ki-1,i=i+1,in?,否,是,输出b,结束,程序框图:,INPUT a,k,n,i=1,b=0,DO,b=b+t*k(i-1),i=i
4、+1,LOOP UNTIL in,PRINT b,END,t=a MOD 10,a=a10,t=a MOD 10,程序:,例3:把89化为二进制的数.,分析:把89化为二进制的数,需想办法将89先写成如下形式,89=an2n+an-12n-1+a121+a020 .,89=64+16+8+1=126+025+124 +123+022+021+120=1011001(2).,但如果数太大,我们是无法这样凑出来的,怎么办?,44 1,例3:把89化为二进制的数.,我们可以用下面的除法算式表示除2取余法:,22 0,11 0,5 1,2 1,1 0,0 1,把算式中各步所得的余数从下到上排列,得到,
5、89=1011001(2).,这种方法也可以推广为把十进制数化为k进制数的算法,称为除k取余法.,例4:把89化为五进制的数.,解:以5作为除数,相应的除法算式为:,17 4,3 2,0 3, 89=324(5).,开始,输入a,k,求a除以k的商q,求a除以k的余数r,把得到的余数依次从右到左排列,否,结束,输出全部余数r排列得到的k进制数,a=q,q=0?,是,INPUT “a,k=” ;a,k b=0 i=0 DOq=akr=a MOD kb=b+r*10ii=i+1a=q LOOP UNTIL q=0 PRINT b END,问题5你会把三进制数10221(3)化为二进制数吗?,解:第一步:先把三进制数化为十进制数: 10221(3)=134+033+232+231+130=81+18+6+1=106.,第二步:再把十进制数化为二进制数:,106=1101010(2).,小结,进位制的概念及表示方法;各种进位制之间的相互转化.,anan-1a1a0(k) =ankn+an-1kn-1+a1k1+a0k0 .,请同学们下课休息,作业:完成活页,