重载运算符高精度算法

高精度算法

 

高精度算法,属于处理大数字的数学计算方法。
在一般的科学计算中,会经常算到小数点后几百位或者更多,当然也可能是几千亿几百亿的大数字。一般这类数字我们统称为高精度数。
高精度算法是用计算机对于超大数据的一种模拟加,减,乘,除,乘方,阶乘,开方等运算。对于非常庞大的数字无法在计算机中正常存储,于是,将数字拆开,拆成一位一位的,或者是四位四位的存储到一个数组中, 用一个数组去表示一个数字,这样这个数字就被称为是高精度数。
高精度算法就是能处理高精度数各种运算的算法,但又因其特殊性,故从普通数的算法中分离,自成一家。
 
 

一、高精度加法:

    高精度加法的实现原理:

1、计算结果的位数
358934760892734899    共18位
38960302975237462      共17位
故结果不会超过19位。
2、将要计算的数字分割成多段,按照顺序排列(这里以0-32767作为每一存储单位存储的数的限制):

(为提高空间利用效率,可以一个存储单位存储多位数。)
3、将两数相加。

4、输出结果。
从高位到低位依次输出。除最高位以外,其他低位上不足4位的要在前面补上0。

二、高精度减法:

  高精度减法的实现原理:

   1.高精度减法相比高精度加法来说,稍微复杂一点,因为减法在差为负数时处理的细节更多一点:当被减数小于减数时,差为负数,差的绝对值是减数减去被减数;在程序实现上用一个变量来存储符号位,用另一个数组存差的绝对值。

   2.实现流程

(1).先比较大小

(2).决定输出符号,为正还是为负

(3).按位减法,并注意处理借位

三、高精度乘法实现

    高精度乘法实现原理:

   1.由于数字较大,无法使用简单的数据结构进行存储,选用数组和字符串来存储数字,字符串方便我们对于高位整数的输入,而整形数组的简便有利于每个位数的计算,结合两者优点便可实现高精度乘法。

    2.实现过程:

(1).通过两个字符串输入两个整数

(2).引入两个数组,将每个整数切割存储到数组里面

(3).进行每一位的运算

(4).处理进位

(5).输出结果

四、高精度除法实现

高精度除法实现原理:高精度除法这一块比较复杂,它可以分为两种情况:

第一种情况:高精除以低精,实际上就是对被除的每一位,包括前面的余数都除以除数。

 

 

构造函数是干什么的

该类对象被创建时,编译系统对象分配内存空间,并自动调用该构造函数,由构造函数完成成员的初始化工作,故:构造函数的作用:初始化对象的数据成员。

 

友元函数是干什么的

友元函数是可以直接访问类的私有成员的非成员函数。它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字friend,其格式如下: 

friend 类型 函数名(形式参数);

 

static是什么

在类内数据成员的声明前加上关键字static,该数据成员就是类内的静态数据成员。

同全局变量相比,使用静态数据成员有两个优势:
静态数据成员没有进入程序的全局名字空间,因此不存在与程序中其它全局名字冲突的可能性;
可以实现信息隐藏。静态数据成员可以是private成员,而全局变量不能;

 

赋值运算符重载是什么

 


本文内容摘抄自:

高精度算法_百度百科

一文说尽C++赋值运算符重载函数(operator=) - 同勉共进 - 博客园

高精度加、减、乘、除算法实现详解 - fanyun的博客 - CSDN博客

posted @ 2019-05-07 17:54  莫瑞  阅读(977)  评论(0编辑  收藏  举报