欢迎来到天天文库
浏览记录
ID:43397394
大小:203.00 KB
页数:18页
时间:2019-10-08
《1.3.1算法案例(3)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、案例三 进位制[问题2]十进制数3721中的每一个数表示什么意思?这个数能写出什么形式?3721=3×103+7×102+2×101+1×100.C7A16(16)=12×164+7×163+10×162+1×161+6×160[问题1]什么叫做基数?一般地,若k是一个大于1的整数,那么以k为基数的k进制数可以表示为一串数字连写在一起的形式anan-1…a1a0(k)(02、,即anan-1…a1a0(k)=an×kn+an-1×kn-1+…+a1×k1+a0×k0.注意这是一个n+1位数.[问题3]二进制只用0和1两个数字,这正好与电路的通和断两种状态相对应,因此计算机内部都使用二进制.计算机在进行数的运算时,先把接受到的数转化成二进制数进行运算,再把运算结果转化为十进制数输出.那么二进制数与十进制数之间是如何转化的呢?例1:把二进制数110011(2)化为十进制数.分析:先把二进制数写成不同位上数字与2的幂的乘积之和的形式,再按照十进制数的运算规则计算出结果.解:110011(2)=1×25+1×24+0×23+0×22+1×21+1×203、=1×32+1×16+1×2+1=51.[问题4]你会把三进制数10221(3)化为十进制数吗?解:10221(3)=1×34+0×33+2×32+2×31+1×30=81+18+6+1=106.k进制数转化为十进制数的方法先把k进制的数表示成不同位上数字与基数k的幂的乘积之和的形式,即anan-1…a1a0(k)=an×kn+an-1×kn-1+…+a1×k1+a0×k0.再按照十进制数的运算规则计算出结果.例2.设计一个算法,把k进制数a(共有n位)化为十进制数b.开始输入a,k,nb=0i=1①①把a的右数第i位数字赋给tb=b+t*ki-1i=i+1i>n?否是输出4、b结束程序框图:INPUTa,k,ni=1b=0DOb=b+t*k^(i-1)i=i+1LOOPUNTILi>nPRINTbENDt=aMOD10a=a10t=aMOD10程序:例3:把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).但如果数太大,我们是无法这样凑出来的,怎么办?441例3:把89化为二进制的数.我们可以用下面的除法算式表示除2取余法:289余数25、2202110251221210201把算式中各步所得的余数从下到上排列,得到89=1011001(2).这种方法也可以推广为把十进制数化为k进制数的算法,称为除k取余法.例4:把89化为五进制的数.解:以5作为除数,相应的除法算式为:174589余数532503∴89=324(5).开始输入a,k求a除以k的商q求a除以k的余数r①把得到的余数依次从右到左排列否结束输出全部余数r排列得到的k进制数a=qq=0?是①INPUT“a,k=”;a,kb=0i=0DOq=akr=aMODkb=b+r*10^ii=i+1a=qLOOPUNTILq=0PRINTbEND[问题5]你6、会把三进制数10221(3)化为二进制数吗?解:第一步:先把三进制数化为十进制数:10221(3)=1×34+0×33+2×32+2×31+1×30=81+18+6+1=106.第二步:再把十进制数化为二进制数:106=1101010(2).∴10221(3)=106=1101010(2).小结进位制的概念及表示方法;各种进位制之间的相互转化.anan-1…a1a0(k)=an×kn+an-1×kn-1+…+a1×k1+a0×k0.请同学们下课休息作业:完成活页
2、,即anan-1…a1a0(k)=an×kn+an-1×kn-1+…+a1×k1+a0×k0.注意这是一个n+1位数.[问题3]二进制只用0和1两个数字,这正好与电路的通和断两种状态相对应,因此计算机内部都使用二进制.计算机在进行数的运算时,先把接受到的数转化成二进制数进行运算,再把运算结果转化为十进制数输出.那么二进制数与十进制数之间是如何转化的呢?例1:把二进制数110011(2)化为十进制数.分析:先把二进制数写成不同位上数字与2的幂的乘积之和的形式,再按照十进制数的运算规则计算出结果.解:110011(2)=1×25+1×24+0×23+0×22+1×21+1×20
3、=1×32+1×16+1×2+1=51.[问题4]你会把三进制数10221(3)化为十进制数吗?解:10221(3)=1×34+0×33+2×32+2×31+1×30=81+18+6+1=106.k进制数转化为十进制数的方法先把k进制的数表示成不同位上数字与基数k的幂的乘积之和的形式,即anan-1…a1a0(k)=an×kn+an-1×kn-1+…+a1×k1+a0×k0.再按照十进制数的运算规则计算出结果.例2.设计一个算法,把k进制数a(共有n位)化为十进制数b.开始输入a,k,nb=0i=1①①把a的右数第i位数字赋给tb=b+t*ki-1i=i+1i>n?否是输出
4、b结束程序框图:INPUTa,k,ni=1b=0DOb=b+t*k^(i-1)i=i+1LOOPUNTILi>nPRINTbENDt=aMOD10a=a10t=aMOD10程序:例3:把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).但如果数太大,我们是无法这样凑出来的,怎么办?441例3:把89化为二进制的数.我们可以用下面的除法算式表示除2取余法:289余数2
5、2202110251221210201把算式中各步所得的余数从下到上排列,得到89=1011001(2).这种方法也可以推广为把十进制数化为k进制数的算法,称为除k取余法.例4:把89化为五进制的数.解:以5作为除数,相应的除法算式为:174589余数532503∴89=324(5).开始输入a,k求a除以k的商q求a除以k的余数r①把得到的余数依次从右到左排列否结束输出全部余数r排列得到的k进制数a=qq=0?是①INPUT“a,k=”;a,kb=0i=0DOq=akr=aMODkb=b+r*10^ii=i+1a=qLOOPUNTILq=0PRINTbEND[问题5]你
6、会把三进制数10221(3)化为二进制数吗?解:第一步:先把三进制数化为十进制数:10221(3)=1×34+0×33+2×32+2×31+1×30=81+18+6+1=106.第二步:再把十进制数化为二进制数:106=1101010(2).∴10221(3)=106=1101010(2).小结进位制的概念及表示方法;各种进位制之间的相互转化.anan-1…a1a0(k)=an×kn+an-1×kn-1+…+a1×k1+a0×k0.请同学们下课休息作业:完成活页
此文档下载收益归作者所有