写在前面:C语言在应用时有很多整数溢出的情形,如果运算结果很大,就需要用到所谓的高精度算法,即用数组来储存整数,并模拟手算的方法进行四则运算,这些算法并不难实现,但是考虑到易用性问题,即如果能像使用int一样方便地使用大整数,在这里我们采取struct来构造大整数类。
结构体BigInteger可用于储存高精度非负整数。

struct BigInteger{static const int BASE = 100000000;static const int WIDTH=8;vector<int> s;BigInteger(long long num=0){*this=num; //构造函数 }//下面是针对于整数赋值和字符串赋值两种不同的赋值方式。BigInteger operator = (long long num){s.clear();do{s.push_back(num%BASE);num/=BASE;}while(num>0);return *this;}BigInteger operator = (const string& str) //赋值运算符{s.clear();int x,len=(str.length()-1) / WIDTH +1;for(int i=0;i<len;i++){int end=str.length() - i*WIDTH;int start=max(0,end-WIDTH);scanf(str.substr(start,end-start).c_str(),"%d",&x);//将长字符串分为几段来保存,每段的长度由end-start来决定s.push_back(x);} return *this;}
};

其中,s用来保存大整数的各个数位。例如,若是要表示1234,第一种方式 x=1234,则s={4,3,2,1},若是第二种方式 x=“12345678912”,即字符串赋值,则s={45678912,123}。用vector而非数组保存数字我们不需要关心这个整数到底有多大,vector会自动根据情况申请和释放内存。

C++应用之自定义大整数类相关推荐

  1. ACM与Java -- 大整数类的常用函数一览表

    BigInteger abs()  此方法返回一个BigInteger,其值是此BigInteger的绝对值. 2 BigInteger add(BigInteger val) 此方法返回一个BigI ...

  2. 关于大整数类加减法算法的一些思考

    这几天做C++作业,有一道题要求实现大整数类,即不受内部数据类型表示范围限制的大数四则运算,比如123456789987654321987654321+987654321234567898765432 ...

  3. java大整数类减1,自己写Java大整数《1》表示和加减

    自己写Java大整数<一>表示和加减 上周粗略计划自己写Java下的大整数运算. 后来仔细想想其实自己动手写大整数运算有1好2不好.2个不好分别是: 1,肯定没有Java内置的BigInt ...

  4. 定义一个大整数类,并重载乘法*运算符

    1 struct bigint{ 2 int a[500]; //可表示1000位以内的整数 3 bigint& operator*(int & value){ 4 for(int i ...

  5. (大整数类Biginteger)大斐波数

    题目 Fibonacci数列,定义如下: f(1)=f(2)=1 f(n)=f(n-1)+f(n-2) n>=3. 计算第n项Fibonacci数值. 输入 输入第一行为一个整数N,接下来N行为 ...

  6. 一点一点解读紫书中例子--大整数类BigInteger (1)

    首先贴上前一部分代码: struct BigInteger {static const int BASE = 100000000;static const int WIDTH = 8;vector&l ...

  7. 大整数类设计(C++)

    简介 在平时的功能需求中,C/C++语言内置的整形变量表示范围已经足够大了,但是在一些特定的场合,例如解决数学问题的时候,可能需要表示极大的整数.这时候C/C++语言提供的类型就不能满足需求了,需要自 ...

  8. NTL密码算法开源库-大整数ZZ类(一)

    2021SC@SDUSC NTL密码算法开源库-大整数ZZ类(一) 本章综述 代码分析 贝祖公式 本章综述 大整数ZZ类主要实现了任意长度大整数表示.最大公因数.Jacobi符号和素性检验.笔者将通过 ...

  9. C++ 大整数运算 高精度除法

    前言 这篇文章主要是对于大整数类的设计过程中,如何实现并改进长除法(模拟竖式法)的一个总结. 高精度除法的分类和比较 虽然有些文章在讨论大整数的除法运算时,喜欢分成高精度除以高精度和高精度除以低精度( ...

最新文章

  1. HDU4587(割点+最大连通分量)
  2. 程序员怎么面试求职?需要注意哪些因素?
  3. 阿里云服务器的安装以及使用
  4. 到底什么是IT服务管理
  5. 淘宝Hadoop现有测试框架探幽
  6. 话里话外:从信息系统两大特性理解信息化的实施难度
  7. ThreadLocal原理浅析
  8. LeetCode每周刷题(2019.7.1-2019.7.7)
  9. mysql数据库相关基础知识02
  10. 不玩游戏,何谈人生!
  11. Windows server 2003 下载
  12. 2019第十届蓝桥杯国赛c++B组真题
  13. 快讯分类_如何从Google快讯创建RSS Feed
  14. 数据库系统原理与应用教程(081)—— MySQL 视图(View)的创建与使用
  15. sqlite附加数据库操作实例
  16. android 读写文件 简书,Android 读取asset文件
  17. 域名绑定SSL阿里云免费证书
  18. nRF Connect SDK(NCS)-Windows开发环境搭建
  19. 一句平静而感人的英文电影对白
  20. 卷积神经网络 图像识别,卷积神经网络 图像处理

热门文章

  1. android点击号码打电话,android-拨打电话单击一个按钮
  2. C#学习笔记004——生成(创建)文本文件
  3. 用T5UIC1 4.3寸串口屏做动画
  4. 同一局域网下,手机能连上wifi,电脑连不上
  5. 怎么看计算机端口号,Win7怎么查看端口号?
  6. 数据治理(二):数据治理功能方面
  7. Gradle 7.4 包上传私服
  8. stable_sort应用例子
  9. 考研调剂 计算机科学 软件,四川大学计算机学院(软件学院)2020非全日制考研调剂信息...
  10. 【FAQ】Gerrit上打开的单子无法打开,点击提示“MissingobjectException:Missing unknown xxxx”