所以大数即,一般的整数类型无法直接表示,通常即通过字符串表示,下面是用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; }