Verwendung von 128-Bit-Ganzzahlen in C++
In diesem Tutorial werden wir 128-Bit-Ganzzahlen in C++ besprechen. Wir werden auch sehen, warum wir es brauchen und die möglichen Alternativen in C++.
Verwendung von 128-Bit-Ganzzahlen in C++
Wir haben mehrere Möglichkeiten, Ganzzahlen in C++ zu verarbeiten. Beginnend mit dem Datentyp int
bis hin zu long
, long int
und long long int
mit 64 Bits, und die maximale positive Zahl, die wir speichern können, ist 9223372036854775807
(in hexadezimaler Form 7FFFFFFFFFFFFFFF
).
Betrachten Sie 7
als Hexadezimalzahl; Als nächstes haben wir 8
, mit binärer 1000
, was bedeutet, dass das Vorzeichenbit eingeschaltet ist. Schließlich haben wir negative Ganzzahlen von -1
bis -9223372036854775808
.
Bedeutung der 128-Bit-Ganzzahl und ihrer Alternativen in C++
Wenn Sie nun noch größere ganze Zahlen brauchen, stellt sich die Frage, wollen wir arithmetische Operationen mit diesen ganzen Zahlen durchführen? Wenn die Antwort ja lautet, benötigen Sie möglicherweise mehr Speicherplatz als 128 Bit.
Das Ergebnis der Addition oder Multiplikation zweier großer Ganzzahlen benötigt möglicherweise mehr Bits. Daher könnte Ihnen in diesem Fall die Implementierung von big integers helfen.
Wenn Sie schließlich eine 128-Bit-Ganzzahl nur zum Speichern benötigen, besteht eine Lösung darin, eine Struktur aus zwei 64-Bit-Ganzzahlen zu erstellen, oder Sie können ein int
-Array von 8
Elementen oder ein char
-Array von 16
Elemente.
GCC stellt jedoch einen speziellen Datentyp für 128-Bit-Ganzzahlen bereit, nämlich int128_t
; Auf unterstützten Compilern können Sie die Größe überprüfen:
int128_t var;
cout << sizeof(var) << '\n';
Die Ausgabe ist 16
, was 16x8=128 Bit
bedeutet.
Es wird jedoch für bestimmte Prozessoren unterstützt, die 128-Bits speichern können; Andernfalls generiert der Compiler beim Versuch, eine große Ganzzahl zu speichern, eine der folgenden Warnungen:
warning: overflow in implicit constant conversion
warning: integer constant is too large for its type
Am Ende der Diskussion muss genau entschieden werden, wie viele Bits im schlimmsten Fall benötigt werden.
Möchten Sie außerdem nur Daten speichern oder arithmetische Operationen ausführen? Dann ist die Implementierung von Big Integer Ihre Lösung, wenn Sie arithmetische Operationen ausführen möchten.
Bei der Big-Integer-Implementierung müssen Sie sich nicht einmal um 500 oder 5000 Bits kümmern.
Wenn Sie nur speichern möchten, stehen Ihnen andere Lösungen zur Verfügung. Verwenden Sie eine Struktur aus zwei 64-Bit-Datenelementen oder verwenden Sie ein Array vom Datentyp int
oder char
.