class uint128 { public: unsigned long long h; unsigned long long l; uint128(){h=0;l=0;} void operator+= (unsigned long long l1) { unsigned long long low= this->l; this->l+=l1; if(this->l<low) h++; } void operator+= (uint128 l1) { unsigned long long low= this->l; this->h+=l1.h; this->l+=l1.l; if(this->l<low) this->h++; } uint128 operator* (unsigned long long l1) { uint128 *ret= new uint128(); for(unsigned long long i=0;i<l1;++i) *ret+=l1; return *ret; } }; SHA512正好要用~ 转自:http://pastebin.com/LYh1ankP