算法案例
(第三课时)
复习引入:
1、秦九韶算法的方法和步骤?
2、举例说明日常生活中的进位制。
一、进位制
1、什么是进位制?
进位制是人们为了计数和运算方便而约定的记数系统。
进位制是一种记数方式,用有限的数字在不同的位
置表示不同的数值。可使用数字符号的个数称为基
数,基数为n,即可称n进位制,简称n进制。
新课讲解:
比如:
满二进一,就是二进制;
满十进一,就是十进制;
满十二进一,就是十二进制;
满六十进一,就是六十进制
“满几进一”就是几进制,几进制的基数就是几.
基数:
2、最常见的进位制是什么?除此之外还有哪
些常见的进位制?请举例说明.
• 最常见的进位制应该是我们数学中的十进
制,比如一般的数值计算,但是并不是生活
中的每一种数字都是十进制的.
• 古人有半斤八两之说,就是十六进制与十
进制的转换.
• 比如时间和角度的单位用六十进位制, 计算
“一打”数值时是12进制的。
• 电子计算机用的是二进制 。
式中1处在百位,第一个3所在十位,第二个3所在
个位,5和9分别处在十分位和百分位。十进制数是逢
十进一的。
我们最常用最熟悉的就是十进制数,它的数值
部分是十个不同的数字符号0,1,2,3,4,5,6
,7,8,9来表示的。
十进制:
例如,它可用一个多项式来表示:
=1*102+3*101+3*100 +5*10-1+9*10-2
实际上,十进制数只是计数法中的一种,但它不是唯一
记数法。除了十进制数,生产生活中还会遇到非十进制的
记数制。如时间:60秒为1分,60分为1小时,它是六十进
制的。两根筷子一双,两只手套为一副,它们是二进制的。
其它进制:
二进制、七进制、八进制、十二进制、
六十进制……
二进制只有0和1两个数字,七进制用0~6七个数字
十六进制有0~9十个数字及ABCDEF六个字母.
为了区分不同的进位制,常在数的右下角标明基数,
十进制一般不标注基数.
例如十进制的,写成(10)
七进制的13,写成13(7);二进制的10,写成10(2)
一般地,若k是一个大于1的整数,那么以k
为基数的k进制可以表示为一串数字连写在一起
的形式:
A
3、十进制的构成
十进制由两个部分构成
例如:3721
其它进位制的数又是如何的呢?
第一、它有0~9十个数字;
第二、它有“数位”,即从右往左为个位、十位、
百位、千位等等。
(用10个数字来记数,称基数为10)
表示有:1个1,2个十, 7个百即7个10的平方,3
个千即3个10的立方
十进制:“满十进一”
探究:P43
其它进制数化成十进制数公式
二、 二进制
二进制是用0、1两个数字来描述的.如11001
二进制的表示方法
区分的写法:11001(2)或者(11001)2
八进制呢?如7342(8)
k进制呢? anan-1an-2…a1(k)?
三、二进制与十进制的转换
1、二进制数转化为十进制数
例1:将二进制数110011(2)化成十进制数。
解:根据进位制的定义可知
所以,110011(2)=51.
其它进制数化成十进制数公式
1、将下面的二进制数化为十进制数?
(1)11 (2)110
练习
2、把其他进位制的数化为十进制数的公式是什么?
例2、设计一个算法,将k进制数a(共有n位)转换为十进制数b。
(1)算法步骤:
第一步,输入a,k和n的值;
第二步,将b的值初始化为0,i的值初始化为1;
第三步,b=b+ai*ki-1, i=i+1
第四步,判断i>n是否成立.若是,则执行第五步,否则,
返回第三步;
第五步,输出b的值.
(2)程序框图:
开始
输入a,k,n
b=0
i=1
把a的右数第i位数字赋给t
b=b+t*ki-1
i=i+1
i>n?
否
是
输出b
结束
(3)程序: INPUT “a,k,n=”;a,k,n
b=0
i=1
t=a MOD 10
DO
b=b+t*k^(i-1)
a=a\10
t=a MOD 10
i=i+1
LOOP UNTIL i>n
PRINT b
END
**上面的程序如采用get函数,可简化为:
INPUT a,k,n
i=1
b=0
WHILE i<=n
t=GET a[i]
b=t*k^(i-1)+b
i=i+1
WEND
PRINT b
END
备注:GET函数用于取出a的右数第i位数
方法:除2取余法,即用2连续去除89或所得的商,然后取余数。
例、 把89化为二进制数
解:根据“逢二进一”的原则,有
89=2×44+1
= 2× (2×22+0)+1
= 2×( 2×( 2×11+0)+0)+1
= 2× (2× (2× (2× 5+1)+0)+0)+1
5= 2× 2+1
=2×(2×(2×(2×(22+1)+1)+0)+0)+1
89=1×26+0×25+1×24+1×23+0×22+0×21+1×20
所以:89=1011001(2)
=2×(2×(2×(23+2+1)+0)+0)+1
=2×(2×(24+22+2+0)+0)+1
=2×(25+23+22+0+0)+1
=26+24+23+0+0+20
89=2×44+1
44= 2×22+0
22= 2×11+0
11= 2× 5+1
= 2× (2× (2× (2× (2× 2+1)+1)+0)+0)+1
所以89=2×(2×(2×(2×(2 × 2 +1)+1)+0)+0)+1
2、十进制转换为二进制
注意:
1.最后一步商为0,
2.将上式各步所得的余数从下到上排列,得到:
89=1011001(2)
另解(除2取余法的另一直观写法):
5
2
2
2
1
2
0
1
0
余数
11
22
44
89
2
2
2
2
0
1
1
0
1
练习 将下面的十进制数化为二进制数?
(1)10 (2)20
例1:把89化为五进制数。
3、十进制转换为其它进制
解:根据除k取余法
以5作为除数,相应的除法算式为:
所以,89=324(5)
895
175
35
0
4
2
3
余数
例2、设计一个程序,实现“除k取余法”。
(1)、 算法步骤:
第一步,给定十进制正整数a和转化后的数的基数k;
第二步,求出a 除以k 所得的商q ,余数r;
第三步,若q 0, 则a=q, 返回第二步;否则,执
行第四步;
第四步,将依次得到的余数从右到左排列,得到k
进制数。
(2)程序框图: 开始
输入a,k
求a除以k的商q
求a除以k的余数r
q=0?
是
否
a=q
将依次输出的r从右到左排列
结束
输出r
(3)程序: INPUT “a,k=”;a,k
b=0
i=0
DO
q=a\k
r=a MOD k
b=b+r*10^i
i=i+1
a=q
LOOP UNTIL q=0
PRINT b
END
练习:
完成下列进位制之间的转化:
(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进制数。