[c++]关于大数存储的思路及实现

本文介绍了一种使用C++实现大数运算的思路,包括大数的字符串存储、逻辑和算数运算。通过封装成类来管理大数操作,详细讨论了加减乘除的实现细节,并涉及小数点位置和符号状态的处理。文章还提到了乘法运算的三种算法比较,目前实现了最坏情况下的高效算法。
摘要由CSDN通过智能技术生成

*大数存储及运算类

由于本人并不是什么专业人士,也不算什么高手,现在还在上高中,做这些时间不多,而且本人对标准库了解甚少,只知道一两个常用的标准库,(而且英文也不好..),所以设计程序的思路可能非常复杂,仅供参考。


大体思路:

-大数的存储使用字符串实现(类的私有成员)

-对数的操作比较严谨且比较多所以封装成类统一管理
-为了方便格式的统一及后续的计算,定义一个string::size_type类型的变量用于存储小数点的位置(这就是所谓的动点了吧)
-同上一点,定义一个bool类型的变量存储该数是否大于0(准确点说是有没有符号)的状态
-由于有状态变量需要实时更新,固定义一共有函数update()用于同步上述两变量的值
-构造函数暂时先设计三种(无参数,string,char(本来还有个double但发现本人对误差的处理没辙,所以整数也暂时没写))
-因字符串不一定符合数字的格式且对数的算数运算及其他处理需要统一格式,故定义一共有函数format()用于格式化字符(大部分情况类本身的操作都会保证数据是经过格式化后的)

-在算数运算和逻辑运算时会经常涉及到单个字符转数值和数值转单个字符的情况,所以我编写了两个内联函数(ASCII移位实现)


算数运算和逻辑运算:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值