- 1、本文档共33页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
大整数运算C语言实现C语言大作业报告源码
一、设计高精度无符号大整数计算
(以1为存储单位)
1.1 需求陈述
对数值很大、精度很高的数进行高精度大整数计算是一类十分常见的问题。但由于C语言中数据类型受数据长度和范围限制,普通数学计算很难实现此类问题,为尝试解决这个问题,专门设计一个C语言程序用于无符号大整数的计算,实现无符号大整数的一般计算和比较功能。
1.2 需求分析
1.2.1 功能分析
表1 程序功能分析
项目 功能 分析 BigN 数据接收 以字符串形式接受 反转字符串函数Invert() 用Translate()将字符串翻译为整形数组 数据
运算 分别用BigN_cmp_low()和BigN_cmp_High()对数据进行比较
//从a[1]对数组进行比较,传入两个数组及其大小以及需要从第几位开始比较
int BigN_cmp_High(int *, int *, int , int );
//从a[n]对数组进行比较,传入两个数组及其大小 加法BigN_Add() 减法BigN_Min() 低位减法BigN_Min_low(),在未反转的情况下计算 乘法BigN_Mul() 除法BigN_Div() 运算辅助函数 反转整形数组InvertInt() 从前面删减多余的零Del_zero_low() 从末尾删减多余的零Del_zero_High() 获取两个数的最大值Get_MAX()
1.2.2 数据分析
该程序可用于计算无符号大整形数据计算,最多可计算长度为200位(即10的200次方大小)的数据,但在原代码中可以随数据需求改变最大长度。该程序中所有运算和比较均考虑到了输入前导0(例0001)的情况。由于数据类型限制,该程序未加入小数计算和负数计算,除法结果中只分别计算商和余数。
1.2.3 技术约束
本程序已在code blocks下编译通过。
1.3 总体设计
1.3.1 全局数据结构
本程序中数据采取以个位数字为单位存入整形数组,在数据计算和比较中对单个数组单元进行操作。采用整形数组存储,主要优点为可以在该程序的基础上进行改进,使字符串中每四个数字或更多存入一个数组单元中(如程序二)。
1.3.2 函数设计
A.数据的接收
1.反转字符串函数 Invert()
函数原型:void Invert (char * , int );
功能: 反转字符串,传入字符串首地址和长度
在加法、减法、乘法计算中必须先对字符串进行反转,是字符串整体逆转,但不改变字符串长度。
2. 翻译字符串函数 Translate()
函数原型:void Translate (char *, int *, int *);
功能:将字符串翻译为数组,传入字符串和数组及数组大小的地址
B. 数据运算
1. 比较函数 BigN_cmp_low()和BigN_cmp_High()
函数原型:int BigN_cmp_low (int *, int *, int , int , int );
和int BigN_cmp_High(int *, int *, int , int );
功能:对整形数组分别进行地位和高位比较,即从开头和结尾开始进行比较。
实现步骤:先将数组中不必要的零去掉,然后记下位数,对位数进行比较,最后从原始数据最高位进行比较,逐步往下比较,若前面小于后面,则返回值为1,;若后面小于前面,则返回-1;若相等,则返回值为0.
2. 加法BigN_Add()
函数原型:void BigN_Add (int *, int *, int , int *);
功能:高精度加法,传入反转后的数组及其大小的最大值,和结果数组的首地址。
实现步骤:依次将所需计算的两个数组及其位数的最大值传入函数,对两个函数每一位进行加法存入结果中,对满十的结果进行进位,然后对该位进行对十取余存入结果。
实现代码:for(i = 1; i = max; i++)
{
res[i] += num1[i] + num2[i];
res[i+1] += res[i] / 10;
res[i] %= 10;
}
3. 减法BigN_Min()和低位减法BigN_Min_low()
函数原型:void BigN_Min (int *, int *, int , int *);
void
您可能关注的文档
- 基于工作过程的高职传媒类专业毕业设计改革探索以出版与发行专业为例.doc
- 基于布局的中文网页正文抽取技术的实现_开题报告_0109doc.doc
- 基于情境认知理论的电视编导实践教学模式的创新思考.doc
- 基于思维导图的课堂教学案例研究.doc
- 基于数字PID控制的直流伺服电机控制系统设计.doc
- 基于核心知识的高效课堂教学改革.ppt
- 基于浮子流量计单片机流量控制系统的设计.doc
- 基于温度补偿的超声波倒车测距系统的设计.doc
- 基于电阻应变片的应变应力测试的概述.doc
- 基于目标市场新产品开发的策略研究以吉林敖东新产品研发为例.doc
- 市委常委、秘书长在2025年市直机关党的工作暨纪检工作会议上的讲话发言材料.docx
- 迎接上级纪检监察工作组调研时的汇报发言材料.docx
- 市长在2025年全市城区控违治乱工作推进会上的讲话发言材料.docx
- 副书记在2025年“打好党建引领基层治理硬仗”推进会上的讲话发言材料.docx
- 在国资国企系统2025年重点工作推进会上的讲话发言材料.docx
- 市长在2025年全市综合交通大会战指挥部会议上的讲话发言材料.docx
- 企业公司集团2025年度第一季度开门红领导动员会部署讲话发言材料(报社行业)2篇.docx
- 委党组书记、主任在2025年省发展改革委民营企业座谈会上的讲话发言材料.docx
- 市纪委书记在全市“纪检监察工作规范化法治化正规化建设年”行动动员部署会议上的讲话发言材料多篇.docx
- 沃尔玛的成本管理分析.docx
最近下载
- T_CERDS 3-2022 企业ESG评价体系.docx
- 冠脉介入治疗护理.pptx
- 2025 英语中考阅读理解解题技巧之最佳标题学案(含答案解析).docx VIP
- 江苏中烟工业公司企业文化建设项目实施方案.docx VIP
- 《余华的《活着》》教学设计(江西省县级优课).docx VIP
- 2025年北京市人大附中普通中考模拟测试(一)英语试题含答案.doc VIP
- 2025年省考超大杯刷题-申论套卷四.pdf VIP
- 737NG-拆装-VSV作动筒.pdf
- (PEP)人教版六年级下册英语《Unit 2 Last weekend》教学设计.pdf VIP
- 螺杆式压缩机维护检修规程.doc VIP
文档评论(0)