大整数的基本运算

写在前面:

大整数相加是很久之前写的,最近又写了大整数相乘,都不难,总结一下吧。
如果以后写了大整数相除也会补充进来的。

众所周知,int型的范围为:-2147483648 ~ +2147483647
long long in型的范围为:-9223372036854775808 ~ +9223372036854775807
在现在这个大数据横行的时代,有些非常大的数据根本不够。
所以我们需要进行数据很大的计算,简要思路就是:用字符串做运算。

大整数相加

大数相加是大数运算的基础,理解这个,理解其他就不难了。
我们在运算时,采用列竖式的方式,回忆一下,我们在小学时学习列竖式的时候:将个位与个位相加,大于10就进位,
再十位与十位相加,再进位。从低位开始,相同位数相加,多于10的进位,这就是基本思想。
就像这样:

在这里插入图片描述
我们不难发现,这种方法无疑就分为两步:
1.从最低位开始,先将同级位数对应相加。
2.判断是否需要定位,从低位开始往前一位进位。
(或者全部相加完再进位也可以)
相加这步很简单,而通过上面的例子我们发现进位也很简单,因为个位数和个位数相加是不超过20的,所以进位也就是说如果当前位数的值大于10,需要进位,便对10取余,然后前一位数加1便可。

我们通过代码来分析:
首先定义3个字符串数组,分别用来存储需要相加的两个值和最后结果,并对结果字符串初始化:

       //#define N 200  //N自行设置
        char a[N];
        char b[N];
        char s[N];   //结果数组
        for(int i=0;i<N;i++)       //初始化,一定要
        {
   
            s[i]=0;
        }
        cin>>a;
        cin>>b;

然后就是将其从个位数字开始对应相加,因为要从个位数字开始,所以字符串要倒着开始遍历:

		int la=strlen(a)-1,lb=strlen(b)-1;
        int k=N-1;
        while(la>=0 &&
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值