课题:§1.3算法案例 第1课时辗转相除法与更相减损术、秦九韶算法 教学目标: 根据课标要求:在学生学习了算法的初步知识,理解了表示算法的算法步骤、程序框 图和程序三种不同方式以后,再结合典型算法案例,让学生经历设计算法解决问题的全过 程,体验算法在解决问题中的重要作用,体会算法的基本思想,提高逻辑思维能力,发展 有条理地思考与数学表达能力。制定以下三维目标 1、知识与技能 理解算法案例的算法步骤和程序框图. 2、过程与方法: 引导学生得出自己设计的算法程序 、情感态度与价值观: 体会算法的基本思想,提高逻辑思维能力,发展有条理地思考与数学表达能力. 二、重点与难点: 重点:引导学生得出自己设计的算法步骤、程序框图和算法程序. 解决策略:通过分析解决具体问题的算法步骤来引导学生写出算法,根据算法画出程序框 图,再根据框图用规范的语言写出程序 难点:体会算法的基本思想,提高逻辑思维能力,发展有条理地思考与数学表达能力 解决策略:让学生能严谨地按照自己是程序框图写出程序。 、学法与教学用具: 1、学法:直观感知、操作确认 2、教学用具:多媒体 四、教学过程 (一)引入课题 大家喜欢打乒乓球吧,由于东、西方文化及身体条件的不同,西方人喜欢横握拍打球 东方人喜欢直握拍打球,对于同一个问题,东、西方人处理问题方式是有所不同的在小 学,我们学过求两个正整数的最大公约数的方法:先用两个数公有的质因数连续去除, 直除到所得的商是互质数为止,然后把所有的除数连乘起来.当两个数公有的质因数较大
课题:§1.3 算法案例 第 1 课时 辗转相除法与更相减损术、秦九韶算法 一、教学目标: 根据课标要求:在学生学习了算法的初步知识,理解了表示算法的算法步骤、程序框 图和程序三种不同方式以后,再结合典型算法案例,让学生经历设计算法解决问题的全过 程,体验算法在解决问题中的重要作用,体会算法的基本思想,提高逻辑思维能力,发展 有条理地思考与数学表达能力。制定以下三维目标: 1、知识与技能 理解算法案例的算法步骤和程序框图. 2、过程与方法: 引导学生得出自己设计的算法程序. 3、情感态度与价值观: 体会算法的基本思想,提高逻辑思维能力,发展有条理地思考与数学表达能力. 二、重点与难点: 重点:引导学生得出自己设计的算法步骤、程序框图和算法程序. 解决策略:通过分析解决具体问题的算法步骤来引导学生写出算法,根据算法画出程序框 图,再根据框图用规范的语言写出程序。 难点:体会算法的基本思想,提高逻辑思维能力,发展有条理地思考与数学表达能力. 解决策略:让学生能严谨地按照自己是程序框图写出程序。 三、学法与教学用具: 1、学法:直观感知、操作确认。 2、教学用具:多媒体。 四、教学过程 (一)引入课题 大家喜欢打乒乓球吧,由于东、西方文化及身体条件的不同,西方人喜欢横握拍打球, 东方人喜欢直握拍打球,对于同一个问题,东、西方人处理问题方式是有所不同的.在小 学,我们学过求两个正整数的最大公约数的方法:先用两个数公有的质因数连续去除,一 直除到所得的商是互质数为止,然后把所有的除数连乘起来. 当两个数公有的质因数较大
时(如8251与6105),使用上述方法求最大公约数就比较困难.下面我们介绍两种不 同的算法——辗转相除法与更相减损术,由此可以体会东、西方文化的差异 (二)研探新知 (1)怎样用短除法求最大公约数? (2)怎样用穷举法(也叫枚举法)求最大公约数? (3)怎样用辗转相除法求最大公约数? (4)怎样用更相减损术求最大公约数? 讨论结果 (1)短除法 求两个正整数的最大公约数的步骤:先用两个数公有的质因数连续去除,一直除到所得的 商是两个互质数为止,然后把所有的除数连乘起来 (2)穷举法(也叫枚举法) 穷举法求两个正整数的最大公约数的解题步骤:从两个数中较小数开始由大到小列举,直 到找到公约数立即中断列举,得到的公约数便是最大公约数 (3)辗转相除法 辗转相除法求两个数的最大公约数,其算法步骤可以描述如下: 第一步,给定两个正整数m,n 第二步,求余数r:计算m除以n,将所得余数存放到变量r中 第三步,更新被除数和余数:m=n,n=r. 第四步,判断余数r是否为0.若余数为0,则输出结果:否则转向第二步继续循环执行. 如此循环,直到得到结果为止.这种算法是由欧几里得在公元前300年左右首先提出的, 因而又叫欧几里得算法 (4)更相减损术 我国早期也有解决求最大公约数问题的算法,就是更相减损术.《九章算术》是中国古代 的数学专著,其中的“更相减损术”也可以用来求两个数的最大公约数,即“可半者半之, 不可半者,副置分母、子之数,以少减多,更相减损,求其等也以等数约之.”翻译为现 代语言如下: 第一步,任意给定两个正整数,判断它们是否都是偶数,若是,用2约简:若不是,执行 第二步,以较大的数减去较小的数,接着把所得的差与较小的数比较,并以大数减小数, 继续这个操作,直到所得的数相等为止,则这个数(等数)或这个数与约简的数的乘积就 是所求的最大公约数
时(如 8 251 与 6 105),使用上述方法求最大公约数就比较困难.下面我们介绍两种不 同的算法——辗转相除法与更相减损术,由此可以体会东、西方文化的差异. (二)研探新知 (1)怎样用短除法求最大公约数? (2)怎样用穷举法(也叫枚举法)求最大公约数? (3)怎样用辗转相除法求最大公约数? (4)怎样用更相减损术求最大公约数? 讨论结果: (1)短除法 求两个正整数的最大公约数的步骤:先用两个数公有的质因数连续去除,一直除到所得的 商是两个互质数为止,然后把所有的除数连乘起来. (2)穷举法(也叫枚举法) 穷举法求两个正整数的最大公约数的解题步骤:从两个数中较小数开始由大到小列举,直 到找到公约数立即中断列举,得到的公约数便是最大公约数. (3)辗转相除法 辗转相除法求两个数的最大公约数,其算法步骤可以描述如下: 第一步,给定两个正整数 m,n. 第二步,求余数 r:计算 m 除以 n,将所得余数存放到变量 r 中. 第三步,更新被除数和余数:m=n,n=r. 第四步,判断余数 r 是否为 0.若余数为 0,则输出结果;否则转向第二步继续循环执行. 如此循环,直到得到结果为止. 这种算法是由欧几里得在公元前 300 年左右首先提出的, 因而又叫欧几里得算法. (4)更相减损术 我国早期也有解决求最大公约数问题的算法,就是更相减损术. 《九章算术》是中国古代 的数学专著,其中的“更相减损术”也可以用来求两个数的最大公约数,即“可半者半之, 不可半者,副置分母、子之数,以少减多,更相减损,求其等也.以等数约之.”翻译为现 代语言如下: 第一步,任意给定两个正整数,判断它们是否都是偶数,若是,用 2 约简;若不是,执行 第二步,以较大的数减去较小的数,接着把所得的差与较小的数比较,并以大数减小数, 继续这个操作,直到所得的数相等为止,则这个数(等数)或这个数与约简的数的乘积就 是所求的最大公约数
(三)范例分析 例1用辗转相除法求8251与6105的最大公约数,写出算法分析,画出程序框图,写出 算法程序 解:用两数中较大的数除以较小的数,求得商和余数:8251=6105×1+2146 由此可得,6105与2146的公约数也是8251与6105的公约数,反过来,8251与6105 的公约数也是6105与2146的公约数,所以它们的最大公约数相等 对6105与2146重复上述步骤:6105=2146×2+1813 同理,2146与1813的最大公约数也是6105与2146的最大公约数.继续重复上述步骤 2146=1813×1+333, 1813=333×5+148 148=37×4. 最后的除数37是148和37的最大公约数,也就是8251与6105的最大公约数 这就是辗转相除法.由除法的性质可以知道,对于任意两个正整数,上述除法步骤总可以 在有限步之后完成,从而总可以用辗转相除法求出两个正整数的最大公约数 算法分析:从上面的例子可以看出,辗转相除法中包含重复操作的步骤,因此可以用循环 结构来构造算法 算法步骤如下: 第一步,给定两个正整数m,n 第二步,计算m除以n所得的余数为r. 第三步,m=n,n=r. 第四步,若r=0,则m,n的最大公约数等于m;否则,返回第二步. 程序框图如右图 程序 输入mn INPUT m n m除以的余数厂 r=m mod n n=r LOOP UNTIL r=o
(三)范例分析 例 1 用辗转相除法求 8 251 与 6 105 的最大公约数,写出算法分析,画出程序框图,写出 算法程序. 解:用两数中较大的数除以较小的数,求得商和余数:8 251=6 105×1+2 146. 由此可得,6 105 与 2 146 的公约数也是 8 251 与 6 105 的公约数,反过来,8 251 与 6 105 的公约数也是 6 105 与 2 146 的公约数,所以它们的最大公约数相等. 对 6 105 与 2 146 重复上述步骤:6 105=2 146×2+1 813. 同理,2 146 与 1 813 的最大公约数也是 6 105 与 2 146 的最大公约数.继续重复上述步骤: 2 146=1 813×1+333, 1 813=333×5+148, 333=148×2+37, 148=37×4. 最后的除数 37 是 148 和 37 的最大公约数,也就是 8 251 与 6 105 的最大公约数. 这就是辗转相除法.由除法的性质可以知道,对于任意两个正整数,上述除法步骤总可以 在有限步之后完成,从而总可以用辗转相除法求出两个正整数的最大公约数. 算法分析:从上面的例子可以看出,辗转相除法中包含重复操作的步骤,因此可以用循环 结构来构造算法. 算法步骤如下: 第一步,给定两个正整数 m,n. 第二步,计算 m 除以 n 所得的余数为 r. 第三步,m=n,n=r. 第四步,若 r=0,则 m,n 的最大公约数等于 m;否则,返回第二步. 程序框图如右图: 程序: INPUT m,n DO r=m MOD n m=n n=r LOOP UNTIL r=0 PRINT m
例2用更相减损术求98与63的最大公约数 解:由于63不是偶数,把98和63以大数减小数,并辗转相减,如下图所示 98-63=35 63-35=28 35-28=7 28-7=21 21-7=14 14-7=7 所以,98和63的最大公约数等于7. 前面我们学习了辗转相除法与更相减损术,现在我们来学习一种新的算法:秦九韶算法 (1)怎样求多项式f(x)=x°+x+x2+x2+x+1当x=5时的值呢? 一个自然的做法就是把5代入多项式f(x),计算各项的值,然后把它们加起来,这时,我 们一共做了1+2+3+4=10次乘法运算,5次加法运算 另一种做法是先计算x2的值,然后依次计算x2·x,(x2·x)·x,((x2·x)·x)·x的 值,这样每次都可以利用上一次计算的结果,这时,我们一共做了4次乘法运算,5次加 法运算 第二种做法与第一种做法相比,乘法的运算次数减少了,因而能够提高运算效率,对于计 算机来说,做一次乘法运算所用的时间比做一次加法运算要长得多,所以采用第二种做法 计算机能更快地得到结果. (2)上面问题有没有更有效的算法呢?我国南宋时期的数学家秦九韶(约12021261)在 他的著作《数书九章》中提出了下面的算法 把一个n次多项式f(x)=anx”+a1-1x+…+a1x+a改写成如下形式: X+…+a1X+ao (anx+anx2+…+a1)x+ao ((anx"+an-ix"+.+a2) x+au x+ao (…((ax+an-1)x+an-2)x+…+a)x+ao 求多项式的值时,首先计算最内层括号内一次多项式的值,即v=anx+a-1, 然后由内向外逐层计算一次多项式的值,即 V2=vixtan-2
END 例 2 用更相减损术求 98 与 63 的最大公约数. 解:由于 63 不是偶数,把 98 和 63 以大数减小数,并辗转相减,如下图所示. 98-63=35 63-35=28 35-28=7 28-7=21 21-7=14 14-7=7 所以,98 和 63 的最大公约数等于 7. 前面我们学习了辗转相除法与更相减损术,现在我们来学习一种新的算法:秦九韶算法. (1)怎样求多项式 f(x)=x5 +x4 +x3 +x2 +x+1 当 x=5 时的值呢? 一个自然的做法就是把 5 代入多项式 f(x),计算各项的值,然后把它们加起来,这时,我 们一共做了 1+2+3+4=10 次乘法运算,5 次加法运算. 另一种做法是先计算 x 2 的值,然后依次计算 x 2·x,(x 2·x)·x,((x 2·x)·x)·x 的 值,这样每次都可以利用上一次计算的结果,这时,我们一共做了 4 次乘法运算,5 次加 法运算. 第二种做法与第一种做法相比,乘法的运算次数减少了,因而能够提高运算效率,对于计 算机来说,做一次乘法运算所用的时间比做一次加法运算要长得多,所以采用第二种做法, 计算机能更快地得到结果. (2)上面问题有没有更有效的算法呢?我国南宋时期的数学家秦九韶(约 1202~1261)在 他的著作《数书九章》中提出了下面的算法: 把一个 n 次多项式 f(x)=anx n +an-1x n-1 +…+a1x+a0改写成如下形式: f(x)=anx n +an-1x n-1 +…+a1x+a0 =(anx n-1 +an-1x n-2 +…+a1)x+ a0 =((anx n-2 +an-1x n-3 +…+a2)x+a1)x+a0 =… =(…((anx+an-1)x+an-2)x+…+a1)x+a0. 求多项式的值时,首先计算最内层括号内一次多项式的值,即 v1=anx+an-1, 然后由内向外逐层计算一次多项式的值,即 v2=v1x+an-2
V3=V2xtan-3 v=v-x+a 这样,求n次多项式f(x)的值就转化为求n个一次多项式的值 上述方法称为秦九韶算法.直到今天,这种算法仍是多项式求值比较先进的算法. (3)计算机的一个很重要的特点就是运算速度快,但即便如此,算法好坏的一个重要标 志仍然是运算的次数.如果一个算法从理论上需要超出计算机允许范围内的运算次数,那 么这样的算法就只能是一个理论的算法 例3已知一个5次多项式为f(x)=5x+2x+3.5x2-2.6x2+1.7x-0.8, 用秦九韶算法求这个多项式当x=5时的值. 解:根据秦九韶算法,把多项式改写成如下形式 f(x)=((((5x+2)x+3.5)x-2.6)x+1.7)x-0.8, 按照从内到外的顺序,依次计算一次多项式当x=5时的值: V1=5×5+2=27 V2=27×5+3.5=138.5; V3=138.5×5-2.6=689.9; V4=689.9×5+1.7=3451.2 Vs=3415.2×5-0.8=17255.2 所以,当x=5时,多项式的值等于17255.2 算法分析:观察上述秦九韶算法中的n个一次式,可见v的计算要用到v-的值,若令V=an 我们可以得到下面的公式: v=vk1x+an-(k=1,2,…,n) 这是一个在秦九韶算法中反复执行的步骤,因此可用循环结构来实现. 算法步骤如下: 开始〕 第一步,输入多项式次数n、最高次的系数an和x的值. /输人anx的值 第二步,将ⅴ的值初始化为an,将i的值初始化为n-1 第三步,输入i次项的系数a i=n-1 第四步,v=Vx+a;,i=i-1 第五步,判断i是否大于或等于0.若是,则返回第三步; /输出/
v3=v2x+an-3, … vn=vn-1x+a0, 这样,求 n 次多项式 f(x)的值就转化为求 n 个一次多项式的值. 上述方法称为秦九韶算法.直到今天,这种算法仍是多项式求值比较先进的算法. (3)计算机的一个很重要的特点就是运算速度快,但即便如此,算法好坏的一个重要标 志仍然是运算的次数.如果一个算法从理论上需要超出计算机允许范围内的运算次数,那 么这样的算法就只能是一个理论的算法. 例 3 已知一个 5 次多项式为 f(x)=5x5 +2x4 +3.5x3 -2.6x2 +1.7x-0.8, 用秦九韶算法求这个多项式当 x=5 时的值. 解:根据秦九韶算法,把多项式改写成如下形式: f(x)=((((5x+2)x+3.5)x-2.6)x+1.7)x-0.8, 按照从内到外的顺序,依次计算一次多项式当 x=5 时的值: v0=5; v1=5×5+2=27; v2=27×5+3.5=138.5; v3=138.5×5-2.6=689.9; v4=689.9×5+1.7=3 451.2; v5=3 415.2×5-0.8=17 255.2; 所以,当 x=5 时,多项式的值等于 17 255.2. 算法分析:观察上述秦九韶算法中的 n 个一次式,可见 vk 的计算要用到 vk-1 的值,若令 v0=an, 我们可以得到下面的公式: = + = = − − ( 1,2, , ). , 1 0 v v x a k n v a k k n k n 这是一个在秦九韶算法中反复执行的步骤,因此可用循环结构来实现. 算法步骤如下: 第一步,输入多项式次数 n、最高次的系数 an 和 x 的值. 第二步,将 v 的值初始化为 an,将 i 的值初始化为 n-1. 第三步,输入 i 次项的系数 ai. 第四步,v=vx+ai,i=i-1. 第五步,判断 i 是否大于或等于 0.若是,则返回第三步;
否则,输出多项式的值v 程序框图如右图: 程序: INPUT“n=”;n INPUT“an=”;a INPUT i=n-1 WhILE i>=0 PRINT“i INPUT“ai WEND PRINT V END (四)随堂练习 P45练习1、2 (五)归纳总结 (1)用辗转相除法求最大公约数 (2)用更相减损术求最大公约数 (3).秦九韶算法的方法和步骤.以及计算机程序框图. (六)作业布置 1、P48习题1.3A组1、22、完成课后巩固作业(八) 五、教学反思:
否则,输出多项式的值 v. 程序框图如右图: 程序: INPUT “n=”;n INPUT “an=”;a INPUT “x=”;x v=a i=n-1 WHILE i>=0 PRINT “i=”;i INPUT “ai=”;a v=v*x+a i=i-1 WEND PRINT v END (四)随堂练习 P45 练习 1、2 (五)归纳总结 (1)用辗转相除法求最大公约数. (2)用更相减损术求最大公约数. (3).秦九韶算法的方法和步骤.以及计算机程序框图. (六)作业布置 1、P48 习题 1.3 A 组 1、2 2、完成课后巩固作业(八) 五、教学反思: _________________________________________________________ _________________________________________________________ _________________________________________________________ _________________________________________________________
1.3算法案例 第2课时进位制 、教学目标 根据课标要求:掌握不同进制之间的相互转化,会用程序描述不同进制之间的转化,体会 数学的转化思想,制定以下三维目标: 1、知识与技能 学生理解各种进位制与十进制之间转换的规律,会利用十进制与各种进制之间的联系进行 各种进位制之间的转换 2、过程与方法 学生经历得出各种进位制与十进制之间转换的规律的过程,进一步掌握进位制之间转换的 方法。 、情感、态度与价值观 学生通过合作完成任务后,领悟十进制,二进制的特点,了解计算机的电路与二进制的联 系,进一步认识到计算机与数学的联系,培养他们的合作精神和严谨的态度 二、教学重点、难点 重点:各进位制之间的转换 解决策略:让学生弄懂各进位制的特点和联系,再搭配习题讲解 难点:“除k取余法”的理解。 解决策略:先给出具体的例子讲解,再延伸到一般的情况。 、学法与教学用具 1、学法:讲授法、归纳法、讨论法。 、教学用具:多媒体,投影仪 四、教学过程 (一)引入课题 在日常生活中,我们最熟悉、最常用的是十进制,据说这与古人曾以手指计数有关,爱好 天文学的古人也曾经采用七进制、十二进制、六十进制,至今我们仍然使用一周七天
_________________________________________________________ 1.3 算法案例 第 2 课时 进位制 一、教学目标: 根据课标要求:掌握不同进制之间的相互转化,会用程序描述不同进制之间的转化,体会 数学的转化思想,制定以下三维目标: 1、知识与技能 学生理解各种进位制与十进制之间转换的规律,会利用十进制与各种进制之间的联系进行 各种进位制之间的转换。 2、过程与方法 学生经历得出各种进位制与十进制之间转换的规律的过程,进一步掌握进位制之间转换的 方法。 3、情感、态度与价值观 学生通过合作完成任务后,领悟十进制,二进制的特点,了解计算机的电路与二进制的联 系,进一步认识到计算机与数学的联系,培养他们的合作精神和严谨的态度。 二、教学重点、难点 重点:各进位制之间的转换。 解决策略:让学生弄懂各进位制的特点和联系,再搭配习题讲解。 难点:“除 k 取余法”的理解。 解决策略:先给出具体的例子讲解,再延伸到一般的情况。 三、学法与教学用具 1、学法:讲授法、归纳法、讨论法。 2、教学用具:多媒体,投影仪 四、教学过程 (一)引入课题 在日常生活中,我们最熟悉、最常用的是十进制,据说这与古人曾以手指计数有关,爱好 天文学的古人也曾经采用七进制、十二进制、六十进制,至今我们仍然使用一周七天、一
年十二个月、一小时六十分的历法.今天我们来学习一下进位制 (二)研探新知 进位制是人们为了计数和运算方便而约定的计数系统,约定满二进一,就是二进制;满十 进一,就是十进制:满十二进一,就是十二进制:满六十进一,就是六十进制等等.也就 是说:“满几进一”就是几进制,几进制的基数(都是大于1的整数)就是几 在日常生活中,我们最熟悉、最常用的是十进制,据说这与古人曾以手指计数有关,爱好 天文学的古人也曾经采用七进制、十二进制、六十进制,至今我们仍然使用一周七天、 年十二个月、一小时六十分的历法 十进制使用09十个数字计数时,几个数字排成一行,从右起,第一位是个位,个位上 的数字是几,就表示几个一;第二位是十位,十位上的数字是几,就表示几个十:接着依 次是百位、千位、万位… 例如:十进制数3721中的3表示3个千,7表示7个百,2表示2个十,1表示1个 于是,我们得到下面的式子: 3721=3×103+7×102+2×10+1×10 与十进制类似,其他的进位制也可以按照位置原则计数由于每一种进位制的基数不同, 所用的数字个数也不同.如二进制用0和1两个数字,七进制用06七个数字 般地,若k是一个大于1的整数,那么以k为基数的k进制数可以表示为一串数字连写 在一起的形式ana-1…a1ao(k)(0<an<k,0≤a-1,…,a1,a<k) 其他进位制的数也可以表示成不同位上数字与基数的幂的乘积之和的形式,如 110011c2)=1×25+1×2+0×23+0×2+1×2+1×2, 7342(8=7×83+3×82+4×8+2×80 非十进制数转换为十进制数比较简单,只要计算下面的式子值即可: aan…l1aoa=an×k"+an-×k+…+a1×k+a 第一步:从左到右依次取出k进制数anan-1…aa0(k)各位上的数字,乘以相应的k的幂 的幂从n开始取值,每次递减1,递减到0,即an×k,an×k",…,a1×k,a0×k 第二步:把所得到的乘积加起来,所得的结果就是相应的十进制数 关于进位制的转换,教科书上以十进制和二进制之间的转换为例讲解,并推广到十进制和
年十二个月、一小时六十分的历法.今天我们来学习一下进位制. (二)研探新知 进位制是人们为了计数和运算方便而约定的计数系统,约定满二进一,就是二进制;满十 进一,就是十进制;满十二进一,就是十二进制;满六十进一,就是六十进制等等.也就 是说:“满几进一”就是几进制,几进制的基数(都是大于 1 的整数)就是几. 在日常生活中,我们最熟悉、最常用的是十进制,据说这与古人曾以手指计数有关,爱好 天文学的古人也曾经采用七进制、十二进制、六十进制,至今我们仍然使用一周七天、一 年十二个月、一小时六十分的历法. 十进制使用 0 ~9 十个数字.计数时,几个数字排成一行,从右起,第一位是个位,个位上 的数字是几,就表示几个一;第二位是十位,十位上的数字是几,就表示几个十;接着依 次是百位、千位、万位…… 例如:十进制数 3 721 中的 3 表示 3 个千,7 表示 7 个百,2 表示 2 个十,1 表示 1 个一. 于是,我们得到下面的式子: 3 721=3×103 +7×102 +2×101 +1×100 . 与十进制类似,其他的进位制也可以按照位置原则计数.由于每一种进位制的基数不同, 所用的数字个数也不同.如二进制用 0 和 1 两个数字,七进制用 0~6 七个数字. 一般地,若 k 是一个大于 1 的整数,那么以 k 为基数的 k 进制数可以表示为一串数字连写 在一起的形式 anan-1…a1a0(k)(0<an<k,0≤an-1,…,a1,a0<k). 其他进位制的数也可以表示成不同位上数字与基数的幂的乘积之和的形式,如 110 011(2)=1×25 +1×24 +0×23 +0×22 +1×21 +1×20, 7 342(8)=7×83 +3×82 +4×81 +2×80 . 非十进制数转换为十进制数比较简单,只要计算下面的式子值即可: anan-1…a1a0(k)=an×kn +an-1×kn-1 +…+a1×k+a0. 第一步:从左到右依次取出 k 进制数 anan-1…a1a0(k)各位上的数字,乘以相应的 k 的幂,k 的幂从 n 开始取值,每次递减 1,递减到 0,即 an×kn ,an-1×kn-1 ,…,a1×k,a0×k0; 第二步:把所得到的乘积加起来,所得的结果就是相应的十进制数. 关于进位制的转换,教科书上以十进制和二进制之间的转换为例讲解,并推广到十进制和
其他进制之间的转换.这样做的原因是,计算机是以二进制的形式进行存储和计算数据的 而一般我们传输给计算机的数据是十进制数据,因此计算机必须先将十进制数转换为二进 制数,再处理,显然运算后首次得到的结果为二进制数,同时计算机又把运算结果由二进 制数转换成十进制数输出 1°十进制数转换成非十进制数 把十进制数转换为二进制数,教科书上提供了“除2取余法”,我们可以类比得到十进制 数转换成k进制数的算法“除k取余法 2°非十进制之间的转换 一个自然的想法是利用十进制作为桥梁.教科书上提供了一个二进制数据与16进制数据之 间的互化的方法,也就是先由二进制数转化为十进制数,再由十进制数转化成为16进制 (三)范例分析 例1把二进制数110011a2化为十进制数 解:110011(2)=1×25+1×2+0×23+0×22+1×2+1×2=1×32+1×16+1×2+1=51 点评:先把二进制数写成不同位上数字与2的幂的乘积之和的形式,再按照十进制的运算 规则计算出结果. 例2设计一个算法,把k进制数a(共有n位)化为十进制数b. 算法分析:从例1的计算过程可以看出,计算k进制数a的右数第i位数字a1与k的乘 积a;·kˉ,再将其累加,这是一个重复操作的步骤.所以,可以用循环结构来构造算法 算法步骤如下: 第一步,输入a,k和n的值. 第二步,将b的值初始化为0,i的值初始化为1. 第三步,b=b+a;·k,i=i+1. 第四步,判断i>n是否成立.若是,则执行第五步:否则,返回第三步 第五步,输出b的值. 程序框图如右图:
其他进制之间的转换.这样做的原因是,计算机是以二进制的形式进行存储和计算数据的, 而一般我们传输给计算机的数据是十进制数据,因此计算机必须先将十进制数转换为二进 制数,再处理,显然运算后首次得到的结果为二进制数,同时计算机又把运算结果由二进 制数转换成十进制数输出. 1°十进制数转换成非十进制数 把十进制数转换为二进制数,教科书上提供了“除 2 取余法”,我们可以类比得到十进制 数转换成 k 进制数的算法“除 k 取余法”. 2°非十进制之间的转换 一个自然的想法是利用十进制作为桥梁.教科书上提供了一个二进制数据与 16 进制数据之 间的互化的方法,也就是先由二进制数转化为十进制数,再由十进制数转化成为 16 进制 数. (三)范例分析 例 1 把二进制数 110 011(2)化为十进制数. 解:110 011(2)=1×25 +1×24 +0×23 +0×22 +1×21 +1×20 =1×32+1×16+1×2+1=51. 点评:先把二进制数写成不同位上数字与 2 的幂的乘积之和的形式,再按照十进制的运算 规则计算出结果. 例 2 设计一个算法,把 k 进制数 a(共有 n 位)化为十进制数 b. 算法分析:从例 1 的计算过程可以看出,计算 k 进制数 a 的右数第 i 位数字 ai与 k i-1的乘 积 ai·ki-1,再将其累加,这是一个重复操作的步骤.所以,可以用循环结构来构造算法. 算法步骤如下: 第一步,输入 a,k 和 n 的值. 第二步,将 b 的值初始化为 0,i 的值初始化为 1. 第三步,b=b+ai·ki-1,i=i+1. 第四步,判断 i>n 是否成立.若是,则执行第五步;否则,返回第三步. 第五步,输出 b 的值. 程序框图如右图:
程序 INPUT“a,k,n 始 输入akn t=a MOD 10 b=b+t*k (i-1) a=a\10 的右数第位数字赋给 t=a MOD 10 b=b+fk =1+1 LOOP UNTIL i>n PRINT 是 END 例3把89化为二进制数 解:根据二进制数“满二进一”的原则,可以用2连续去除89或所得商,然后取余数.具 体计算方法如下: 因为89=2×44+1,44=2×22+0, 22=2×11+0, 11=2×5+1, 5=2×2+1 2=2×1+0 1=2×0+1, 所以 89=2×(2×(2×(2×(2×2+1)+1)+0)+0)+1 89余数 =2×(2×(2×(2×(2+1)+1)+0)+0)+1 1×26+0×25+1×24+1×23+0×22+0×2+1×2 1011001c2 这种算法叫做除2取余法,还可以用右边的除法算式表示: 2 把上式中各步所得的余数从下到上排列,得到89=1011001a 上述方法也可以推广为把十进制数化为k进制数的算法,称为除k取余法
程序: 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 例 3 把 89 化为二进制数. 解:根据二进制数“满二进一”的原则,可以用 2 连续去除 89 或所得商,然后取余数.具 体计算方法如下: 因为 89=2×44+1,44=2×22+0, 22=2×11+0, 11=2×5+1, 5=2×2+1, 2=2×1+0, 1=2×0+1, 所以 89=2×(2×(2×(2×(2×2+1)+1)+0)+0)+1 =2×(2×(2×(2×(2 2 +1)+1)+0)+0)+1 =…=1×26 +0×25 +1×24 +1×23 +0×22 +0×21 +1×20 =1 011 001(2). 这种算法叫做除 2 取余法,还可以用右边的除法算式表示: 把上式中各步所得的余数从下到上排列,得到 89=1 011 001(2). 上述方法也可以推广为把十进制数化为 k 进制数的算法,称为除 k 取余法