Geben Sie eine 64-Bit-Ganzzahl in C++ an
Im heutigen Tutorial werden wir diskutieren und lernen, wie wir 64-Bit-Ganzzahlen in C++ angeben können. Außerdem werden wir die älteren Methoden vergleichen, wenn es Probleme mit der Verwendung von 64-Bit-Ganzzahlen gab.
Geben Sie die 64-Bit-Ganzzahl in C++ an
Wir haben mehrere Möglichkeiten, Ganzzahlen in C++ zu verarbeiten. Beginnend mit dem Datentyp int
bis hin zu long int
und long long int
mit 64 Bit können Sie die Größe mit dem folgenden Code überprüfen:
#include <iostream>
using namespace std;
int main() {
long long int v;
cout << sizeof(v) << '\n';
return 0;
}
Die Ausgabe erfolgt in 8
Bytes oder 64
Bits. Vergleichen wir den Maximalwert, der von long long int
verarbeitet werden kann, mit dem folgenden Code:
#include <iostream>
using namespace std;
int main() {
long long int v = 9223372036854775807;
cout << sizeof(v) << '\n';
cout << v << '\n';
return 0;
}
Die Ausgabe ist 9223372036854775807
, also 8
Bytes. Wir erhalten jedoch eine Fehlermeldung, die besagt: Integer-Konstante ist so groß, dass sie ohne Vorzeichen ist
, wenn Sie den Wert von v
erhöhen.
Dies impliziert, dass 9223372036854775807
der maximale Bereich positiver Werte ist, der korrekt verarbeitet wird. Wenn Sie diese Zahl in Hexadezimal umwandeln, ist der Wert 7FFFFFFFFFFFFFFF
.
Das bedeutet, dass wir alle Bits 1
haben, mit Ausnahme des Vorzeichenbits. Ebenso ist der maximale Bereich für negative Ganzzahlen -9223372036854775808
.
Daher scheint es kein Problem mit einer 64-Bit-Ganzzahl zu geben; In der Vergangenheit waren jedoch viele Prozessoren nicht in der Lage, 64-Bit-Ganzzahlen zu verarbeiten. Daher gaben dieselben Codes die falsche Ausgabe.
Beispielsweise gab es Fehlermeldungen, als wir versuchten, die folgenden Informationen zu speichern. Siehe Code und zugehörige Fehlermeldungen:
long long int h2 = 0x4444000044444;
Die Fehlermeldung war:
warning: overflow in implicit constant conversion
warning: integer constant is too large for its type
Neben long long int
gab es in stdint.h
noch einen weiteren Typ, nämlich int64_t
. Wenn Sie die Größe überprüfen, erhalten Sie erneut 8
Bytes oder 64
Bits. Das Ergebnis ist jedoch dasselbe.
Die Diskussion kommt zu dem Schluss, dass wir in der Vergangenheit Probleme bei der Verwendung von 64-Bit-Ganzzahlen in C++ hatten. Es war Compiler- und Architektur-abhängig; Dieses Problem besteht jedoch nicht mehr in den neueren Compiler-Versionen.
Man kann 64-Bit-Integer sicher in long long int
oder int64_t
verarbeiten. Diese Typen speichern nicht nur Werte, sondern Sie können auch mathematische Operationen ausführen, sofern das Ergebnis innerhalb von 64 Bit liegt.