为什么用大数加法
int :-2147483648~2147483647 (10位数)
unsigned int :0~4294967295 (10位数)
long long:-9223372036854775808~9223372036854775807 (19位数)
unsigned long long:0~18446744073709551615 (20位数)
上面给出了数字的位数范围。
现在如果有一个需求,我们要一个20位的数字加20位的数字,这个结果可能是20位,那么不会超过范围;但结果也可能是21位。
不说20位加20位,比如20位9加1,很明显是1后面有20位0,超出了范围。这时就需要大数加法。
大数加法有很多种,我用的是C++中的string。用string存放大数来相加。
C++代码
含注释,其实比较好理解,举个简单的例子跟着代码走就可以。(简单例子完了再看比较复杂的例子)
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string add(string a,string b){
//a,b为要加的两数
a=a.substr(a.find_first_not_of('0'));//去除字符串开头的0
b=b.