文档详情

第四讲高精度计算.doc

发布:2017-04-18约1.95万字共22页下载文档
文本预览下载声明
授课教师:滨海县实验小学仇大成 small_jiajia@163.com 第四讲 高精度计算 由于计算机具有运算速度快,计算精度高的特点,许多过去由人来完成的烦琐、复杂的数学计算,现在都可以由计算机来代替,人可以从计算中解放出来,做更具有创造性的工作。 计算机计算结果的精度,通常要受到计算机硬件环境的限制。例如,QB要计算的数字超过16位,计算机将按浮点形式输出;另一方面,计算机又有数的表示范围的限制,在一般的微型计算机上,实数的表示范围为l0-38 -l038。例如,在计算N!时,当N=34时计算结果就超过了这个范围,无法计算了。这是由计算机的硬件性质决定的,用户一般是无法改变的。但是,我们可以通过”软”的方式来解决这一困难,即通过程序设计的方法进行高精度计算。    学习重点 1、掌握高精度计算基本方法并能应用。  2、掌握高精度加法、高精度减法、高精度乘法。 3、掌握高精度除法,理解高精度除法运算中被除数、除数、商和余数之间的关系。  4、分析总结常用高精度算法特点,并能编写相应的程序。 5、在学习的过程中应强化“算法领先”的意识,根据实际情况对高精度运算进行优化的策略与方法。 学习过程 一、高精度计算的基本方法 在计算机上进行高精度计算,首先要处理好以下几个基本问题: 【数据的接收与存储】 (1)一般采用字符串变量接收数据,然后用测量字符串长度函数确定其位数。 INPUT A$ L=LEN(A$) (2)分离各位数位上的数 分离各数位上的数通常采用正向存储的方法。以“163848192”为例,见下表: A(9)A(8)A(7)A(6)A(5)A(4)A(3)A(2)A(1)163848392 基本原理是A(1)存放个位上的数字,A(2)存放十位上的数字,……依此类推。 结合字符串中MID$可以实现各数位上数字的分离 FOR I= 1 TO L A(I)=VAL(MID$(A$,L+1-I,1) NEXT I 【计算结果位数的确定】 (1)高精度加法的和的位数为两个加数中较大数的位数加1。 (2)高精度减法的差的位数为被减数和减数中较大数的位数加1。 (3)高精度乘法的积的位数为两个相乘的数的位数之和。 (4)高精度除法的商的位数按题目的要求确定结果的存储空间。 【进位处理】 (1)加法进位 A(k)=A(k)+B(k) IF A(k)10 THEN A(k)=A(k) - 10 :A(k+1)=A(k+1)+1 (2)乘法进位 Y = A(I) * B(I) + G G = INT(Y / 10) D(I)= Y – G * 10 或 Y = A(I) * B(I) + G D(J) = Y MOD 10 G = Y \ 10 【减法借位的处理】 IF A(I) B(I) THEN A(I+1)=A(I+1)-1:A(I)=A(I)+10 A(I)=A(I)- B(I) 【商与余数的求法】 A(I)= X(I-1)*10 D(I)=INT(A(I)/B) X(I)=A(I)-D(I)* B 【教法指导】 根据高精度抽象、小学生不易理解的特点,设置高精度计算的基本方法这一部分。本节以讲解高精度运算基本方法为主,通过一些直观性较强的教学方式引导学生主动参与,进而对数位分离、进位、除法中余数的处理有一个完整的认识,为下面的学习打好基础。 【做一做】输入一个高精度数“329807421572389”,按正向存储的方法将各数位上的数分离出来放入A()数组。 【想一想】乘法进位中变量G是用来做什么用的?在做高精度乘法之前必须首先要对G进行什么设置? 二、高精度加法 【问题描述】 任意输入两个100位以内的正整数,打印输出它们的和。 【问题分析】 设要参与加法运算的两个数分别为X,Y,N=MAX(X的位数,Y的位数)。 将X,Y分别存放在数组A与数组B中,最低值(个位数)放在第一个单元内,由低位到高位连续存放。第N+1个单元是淮备用来存放加法进位的。 例如,当A=123456,B=135792468时 我们日常笔算加法的过程如下:(红色表示在当前位进行加法运算时有进位) 123456 + 135792468 --------------- 135915924 由于数B为9位,则N=9, A(1)到A(9)的值分别为6,5,4,3,
显示全部
相似文档