1.3算法案例
普通高中课程标准实验教科书 数学(必修3)
问题提出
1.辗转相除法和更相减损术,是求两个正整数的最大公约数的算法,秦九韶算法是求多项式的值的算法,将这些算法转化为程序,就可以由计算机来完成相关运算.
2.人们为了计数和运算方便,约定了各种进位制,这些进位制是什么概念,它们之间是怎样转化的?对此,我们从理论上作些了解和研究.
进位制
知识探究(一):进位制的概念
思考1:进位制是为了计数和运算方便而约定的记数系统,约定满二进一,就是二进制;满十进一,就是十进制;每七天为一周,就是七进制;每十二个月为一年,就是十二进制,每六十秒为一分钟,每六十分钟为一个小时,就是六十进制;等等.一般地,“满k进一”就是k进制,其中k称为k进制的基数.那么k是一个什么范围内的数?
思考2:十进制使用0~9十个数字,那么二进制、七进制、十六进制分别使用哪些数字?
思考3:一般地,若k是一个大于1的整数,则以k为基数的k进制数可以表示为一串数字连写在一起的形式:anan-1…a1a0(k). 其中各个数位上的数字an,an-1,…,a1,a0的取值范围如何?
(1) 0
(2)0≤an-1,…,a1,a0思考4:十进制数3721表示的数可以写成3×103+7×102+2×101+1×100,依此类比,二进制数110011(2),十六进制数 1A8(16)分别可以写成什么式子?
110011(2)=1×25+1×24+0×23+0×22+1×21+1×20
1A8(16)=1×162+10×161+8×160.
思考5:一般地,如何将k进制数 anan-1…a1a0(k)写成各数位上的数字与基数k的幂的乘积之和的形式?
思考6:在上面的等式中如果把右边的结果算出来,是一个几进制的数?
anan-1…a1a0(k)
=an×kn+an-1×kn-1+…+a1×k1+a0×k0 .
k进制数转化为十进制数的方法
先把k进制的数表示成不同位上数字与基数k的幂的乘积之和的形式,即
anan-1…a1a0(k)
=an×kn+an-1×kn-1+…+a1×k1+a0×k0 .
再按照十进制数的运算规则计算出结果.
知识探究(二):k进制化十进制
例1 将下列各进制数化为十进制数.
(1)10302(4) ; (2)1234(5).
理论迁移
10302(4)=1×44+3×42+2×40=306.
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.
分析:把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).
但如果数太大,我们是无法这样凑出来的,怎么办?
知识探究(三):十进制化k进制
思考:如何把89化为二进制的数.
44 1
我们可以用下面的除法算式表示除2取余法:
2
89 余数
2
22 0
2
11 0
2
5 1
2
2 1
2
1 0
2
0 1
把算式中各步所得的余数从下到上排列,得到
89=1011001(2).
这种方法也可以推广为把十进制数化为k进制数的算法,称为除k取余法.
可以用2连续去除89或所得商(一直到商为0为止),然后取余数---除2取余法.
思考:如何把89化为二进制的数.
例3:把89化为五进制的数.
解:以5作为除数,相应的除法算式为:
17 4
5
89 余数
5
3 2
5
0 3
∴ 89=324(5).
思考:你会把三进制数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).
知识探究(四):k进制化k进制
练习:完成下列进位制之间的转化:
(1)10212(3)= _______(10)
(2)119(10)= _______(6)
(3)335(10)= _______(12)
(4)412(5)= _______(8)
1. k进制数使用0~(k-1)共k个数字,但左侧第一个数位上的数字(首位数字)不为0.
小结
2.用anan-1…a1a0(k)表示k进制数,其中k称为基数,十进制数一般不标注基数.
3.把k进制数化为十进制数的一般算式是:
4.十进制化k进制:除k取余法(把算式中各步所
得的余数从下到上排列)
5.k进制化k进制:先k进制化十进制,再十进制
化k进制.
anan-1…a1a0(k)
=an×kn+an-1×kn-1+…+a1×k1+a0×k0 .