所以大数即,一般的整数类型无法直接表示,通常即通过字符串表示,下面是用c++字符串实现相加,比较粗糙,但大致原理应该是表述清楚了:
std::string stringAdd( const std::string& strLeft, const std::string& strRight )
{
//结果最长为较长数字加1
int nLeftLength = strLeft.length();
int nRigthLength = strRight.length();
int nLargeLength = nLeftLength >= nRigthLength ? nLeftLength : nRigthLength;
std::string strResult( nLargeLength+1, '0' );
int nCount = 0;
while( nLargeLength )
{
char nTempLeft;
if( nLeftLength )
{
nTempLeft = strLeft[--nLeftLength];
}
else
{
nTempLeft = '0';
}
cout << "tempLeft:" << nTempLeft << std::endl;
char nTempRigth;
if( nRigthLength )
{
nTempRigth = strRight[--nRigthLength];
}
else
{
nTempRigth = '0';
}
cout << "tempRight:" << nTempRigth << std::endl;
//计算当前位的值
int nTemp = nTempLeft-'0' + nTempRigth-'0' + strResult[nLargeLength]-'0';
cout << "temp:" << nTemp << std::endl;
strResult[nLargeLength] = (nTemp%10)+'0';
cout << "nLargeLength:" << nLargeLength << std::endl;
//如果超过了10则应进1
if( nTemp >= 10 )
{
strResult[nLargeLength-1] = 1+'0';
}
nLargeLength--;
}
return strResult;
}