(Updating)[C++]大整数算法(重载函数和运算符)

在各种语言中,很多东西都是不一样的,但是数字大小限制都是一样的。也就是说,溢出,是一个让所有程序员都头疼的东西。
大整数加减法,也就是为了解决过大的数字无法计算而生的。

重载

C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。
重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。
当您调用一个重载函数或重载运算符时,编译器通过把您所使用的参数类型与定义中的参数类型进行比较,决定选用最合适的定义。选择最合适的重载函数或重载运算符的过程,称为重载决策。

上面这段话引用自RunNoob

在我认为就是创建或者修改$+-\times \div < \le > \ge ==$这些运算符或者某个变量自带的函数。(是不是有点像定义新运算)

比如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
struct num{
int a;
num operator++(num b){
a = a + b.a + b.a;
return *this
}
};

int main(){
num a,b;
a.a = 1;
b.b = 2;
a = a ++ b;
cout<<a.a<<endl;
return 0;
}

这段代码定义了$a++b = a + b + b$

看到这相信也很清楚重载的用法了,现在就让我们看看如何写重载运算符的高精度运算8.

高精度运算

主体(结构体)

我们需要一个结构体,里面存储这个数的数据。

1
2
3
struct nums{
int arg[MAXN],len;
};

arg这个数组用来存储这个数,len是这个数的长度arg[0]就是个位,arg[len-1]就是最高位。

初始化

我们在创建这个数的时候要自动把这个数设置零,长度设置成1(0也是一位,这个要注意,否则可能出问题)。

1

文章作者: Tim
文章链接: http://itstim.xyz/bigintger/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Tim's Blog
支付宝恰饭打赏
微信恰饭打赏