So implementieren Sie Big Int in C
Einführung
Arbeiten mit Zahlen größer als die Der integrierte Datentyp long int erfordert eine benutzerdefinierte Implementierung namens big int. Hier ist ein allgemeiner Ansatz zum Entwerfen einer Big-Int-Klasse in C.
Datenstruktur
Speichern Sie die Ganzzahl als Vektor kleinerer Zahlen, typischerweise einzelner Ziffern oder kleiner Basiswerte . Dies ermöglicht Ganzzahlen beliebiger Länge.
template<class BaseType> class BigInt { typedef typename BaseType BT; protected: std::vector<BaseType> value_; };
Arithmetische Operationen
Zusatz:
Implementieren Sie den =-Operator mit Binärfunktion Additionsprinzipien. Durchlaufen Sie die Elemente, führen Sie Additionen durch und verarbeiten Sie Übertragungen nach Bedarf.
template<class BaseType> BigInt<BaseType>& BigInt<BaseType>::operator+=(BigInt<BaseType> const& operand) { BT count, carry = 0; for (count = 0; count < std::max(value_.size(), operand.value_.size()); count++) { //... (carry handling omitted for brevity) } return *this; }
Andere Operationen (Multiplikation, Division usw.)
Andere arithmetische Operationen nutzen die implementierten = und - Operatoren. Erwägen Sie die Verwendung bestehender Algorithmen für optimierte Implementierungen.
Weitere Überlegungen
Das obige ist der detaillierte Inhalt vonWie erstelle ich eine Big-Integer-Klasse in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!