第11章 高精度运算_第1页
第11章 高精度运算_第2页
第11章 高精度运算_第3页
第11章 高精度运算_第4页
第11章 高精度运算_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

高精度运算概述在编程中,我们经常会遇到超出普通数据类型范围的大整数运算,这时候就需要用到高精度运算。本章将介绍高精度运算的基本概念、数据存储方式,并详细讲解高精度加减乘除的实现方法。第11章高精度运算11.1高精度运算概述11.2高精度加法11.3高精度减法11.4高精度乘法11.5高精度除法目录11.1.1什么是高精度运算(1)核心概念:定义处理超出普通数据类型(如int、longlong)表示范围的大整数运算,也称为大整数运算。(2)应用场景:必要性当数值超过普通数据类型的存储极限时,语言内置类型无法准确表示,必须手动实现存储和运算逻辑。(3)存储极限:longlong范围-9223372036854775808~9223372036854775807(3)数值界限11.1.2高精度数据的存储输入方式:通常采用字符串方式输入,以避免数值溢出问题。存储方式:将字符串逐位转换为数字存入数组,并逆序存储(低位在前,高位在后),便于运算时的个位对齐。高精度数据的存储示意图1.高精度与高精度运算:两个数都是高精度数,运算过程需要完全模拟手工计算。2.高精度与低精度运算:一个数是高精度数,另一个数是普通数据类型(如int)。3.区别与优势:高精度与低精度运算可以利用编程语言的内置运算功能,实现逻辑相对简单。11.1.3二类高精度运算11.2.1高精度加高精度原理:完全模拟手工加法,从个位开始逐位相加,并处理低位向高位的进位。步骤:遍历两个数组,对应位相加,计算进位,处理最高位的进位。高精度加法原理示意图1.字符串转数组:将输入的大数字符串逆序存储到整型数组中,以便从低位到高位进行运算。2.逐位相加:遍历两个数组,对应位相加,加上低位的进位值。3.处理进位:计算当前位的和,保留个位作为当前结果,十位作为新的进位传递到高位。4.结果输出:逆序输出结果数组,得到最终的高精度加法结果。高精度加高精度程序实现要点11.2.2高精度加低精度原理:将低精度数加到高精度数的个位上,而后不断向前进位即可。示例:以“987+556”为例,我们将“987”视为高精度数,首先将它的各位数字分离并存储至数组,结果为:a[0]=7,a[1]=8,a[2]=9。计算步骤:将a[0]加上556,得到563,扣除进位值56,得a[0]=3。将a[1]加上进位值56,得到64,再扣除向上的进位值6,得a[1]=4。将a[2]加上进位值6,得a[2]=15。比较两个数的大小,确保被减数大于等于减数。若不满足,需交换并记录负号。(1)比较大小从个位开始逐位相减,若当前位不够减,则向高位借位,借1当10。(2)借位处理计算完成后,去除结果中多余的前导零,以得到正确的数值表示。(3)处理前导零11.3.1高精度减高精度1.比较大小:首先比较两个数的长度和每一位数字,确定被减数是否大于等于减数,若否,则交换并记录结果符号。2.逐位相减:从最低位(个位)开始,对应位数字相减。若本位被减数小于减数,则向高位借位(借1当10),再进行减法运算。3.借位处理:处理借位对高位的影响,确保每一位计算的准确性。4.结果输出:删除结果数组中多余的前导零,然后从高位到低位输出最终结果。高精度减高精度程序实现要点11.3.2高精度减低精度要点将高精度数的个位减去低精度数,然后不断从低位向高位借位,直到每一位数字都>=0。一、算法原理模拟手工乘法过程,用乘数的每一位去乘被乘数的每一位,并将结果累加到正确的位置,最后统一处理进位。二、核心要点结果的位数最多为两个乘数位数之和。a[i]*b[j]的结果应累加到c[i+j]的位置。11.4.1高精度乘高精度高精度乘法过程示意图高精度乘高精度程序实现核心逻辑:使用双重循环模拟手工乘法。外层循环遍历乘数的每一位,内层循环遍历被乘数的每一位。每次相乘的结果累加到结果数组的对应位置,最后统一处理进位并输出。

for(inti=0;i<len1;i++)//乘法遵循交换律,不区分被乘数与乘数 { intx=0; //用于存放进位 for(intj=0;j<len2;j++) { c[i+j]+=a[i]*b[j]+x;//原有内容+当前乘积+进位 x=c[i+j]/10; c[i+j]%=10; } c[i+len2]=x; //结果中最高位向前的进位 }高精度乘高精度核心代码逻辑11.4.2高精度乘低精度【原理】详见课本,以一个具体数字为:987*56=(900+80+7)*56=900*56+80*56+7*56=55272图示如下:高精度乘以低精度运算过程示意图11.5.1高精度除以低精度【原理】模拟手工除法的计算过程,从被除数的高位开始,逐位进行除法运算,同时记录每一步的商和余数。【要点】被除数需按原顺序存储(高位在前),因为除法运算的逻辑是从高位向低位依次进行的。高精度除以低精度运算过程示意图课堂小结●高精度运算概述:定义、数据存

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论