大数运算之大数加法(C++)

大数运算之大数加法(C++)

众所周知,加法运算是小学一年级的学生就懂的知识点。即从两个数个位开始,按位相加,逢十进一。

对于懂得C++的你而言,so so so easy! 只需要利用加法运算符即可

但若你要处理的数值位数十分巨大,如两个位数为20的数相加。在纸上进行运算十分简单,但在C++中直接使用加法运算符却无法实现你的预期,这是因为数值太大了,即使是使用长整型也无法存储如此大的数据。因此我们会想:不妨利用数组来模拟小学一年级就学过的加法运算思想。

实现代码如下

class Solution {
  public:
    string addBinary(string a, string b) 
    {
        string str;
        int carry = 0;//进位项
        for(int i = a.size() - 1, j = b.size() - 1; i >= 0 || j >= 0 || carry; --i, --j) 
        {
            int x = i < 0 ? 0 : a[i] - '0';//将字符转换为整数,方便计算
            int y = j < 0 ? 0 : b[j] - '0';
            int sum = (x + y + carry) % 10;
            carry = (x+y+carry) / 10;
            str.insert(0, 1, sum + '0');
        }
        return str;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值