第四讲高精度计算.doc
文本预览下载声明
授课教师:滨海县实验小学仇大成 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,
显示全部