高精度加法与高精度乘法是高精度计算中最常用的两种运算。
高精度计算是对于大数(几十位到几百位的数)进行运算,思路就是模拟竖式计算,以下给出高精加与高精乘的介绍。
1、高精加:
设a、b数组为加数,c数组为和,那么a、b的对应位数字要进行相加,且顺序从低位到高位,在加的过程中,要注意进位。
2、高精乘:
设a、b为乘数,c为积,那么a、b每一位都要与另一乘数每一位相乘(而不是对应位),乘的过程中要注意进位。
#pragma once
#include <string>
#include <iostream>
#include <cstring>
using namespace std;
#define NUMSIZE 10000
class HighAcc
{
char m_data[NUMSIZE];
size_t m_size;
public:
HighAcc(string s) :
m_size(s.size())
{
memset(m_data, 0, NUMSIZE);
string::reverse_iterator i;
int j = 0;
for (i = s.rbegin(); i != s.rend(); i++)
{
m_data[j] = *i - '0';
j++;
}
}
HighAcc() :
m_size(1)
{
memset(m_data, 0, NUMSIZE);
}
HighAcc operator + (const HighAcc &s) const
{
HighAcc res;
size_t maxsize = m_size > s.m_