Geben Sie eine 64-Bit-Ganzzahl in C++ an

Abdul Mateen 12 Oktober 2023
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.

Verwandter Artikel - C++ Integer