Technologieaustausch

Das Berechnungsprinzip des Bereichs, der durch Variablen vom Typ int dargestellt wird

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Verstehen

Fügen Sie hier eine Bildbeschreibung ein
Normalerweise belegt die Variable vom Typ int 4 Bytes, 1 Byte hat 8 Bits und jedes Bit hat zwei Zustände: 0 und 1, sodass die Variable vom Typ int insgesamt 2 ^ 32 Zustände darstellen kann (dh sie kann 2 ^ 8 darstellen). Datenwert).

2. Warum beträgt der Wertebereich einer Ganzzahl vom Typ int normalerweise -2147483648 ~ 2147483647?

Beginn ist um 07:36 Uhr
weiteres Verständnis
        fragen: Aus den beiden oben genannten Videos können wir erkennen, dass der Bereich positiver Ganzzahlen, die durch den Typ int dargestellt werden können, 1 ~ 2^31 - 1 beträgt. Wenn wir diese Logik mit negativen Ganzzahlen vergleichen, ergibt sich der Bereich der darstellbaren Ganzzahlen Sollte der int-Typ nicht -2^31 + 1 ~ 2^31 -1 sein? Da der Wert 2^31 nicht erhalten werden kann, warum kann dann -2^31 erhalten werden?
        Antwort:In der Informatik ist die am häufigsten verwendete vorzeichenbehaftete GanzzahldarstellungZweierkomplementdarstellung . Diese Methode löst nicht nur das Problem der Darstellung positiver und negativer Zahlen, sondern vereinfacht auch binäre Additions- und Subtraktionsoperationen. Schauen wir uns diese Darstellung im Detail an:
        1. Eine positive Zahl : Die binäre Darstellung positiver Zahlen ist dieselbe wie die vorzeichenloser Zahlen. Die dreistellige binäre Darstellung von 3 ist beispielsweise 011.
        2. negative Zahl : Die Darstellung negativer Zahlen erfolgt durch das Komplement positiver Zahlen. Das Zweierkomplement einer negativen Zahl wird berechnet, indem die binäre Darstellung des Absolutwerts der Zahl invertiert und 1 addiert wird. Zum Beispiel:
① Negation: Invertieren Sie zunächst die binäre Darstellung von 3, 011, in 100.
② Addiere 1: Addiere 1 zu 100, um 101 zu erhalten, sodass die Zweierkomplementdarstellung von -3 101 ist.
         Bei einer 32-Bit-Ganzzahlvariablen stellt ihr höchstes Bit (auch Vorzeichenbit genannt) das Vorzeichen dar, 0 steht für positiv und 1 steht für negativ. Die restlichen 31 Bit werden zur Darstellung numerischer Werte verwendet.Als nächstes zurück zur gerade aufgeworfenen Frage:
        1. Positiver Bereich (einschließlich 0) : Das Vorzeichenbit ist 0 und die restlichen 31 Bits können Werte von 000…000 (31 0s) bis 011…111 (31 1s) darstellen. Der entsprechende Dezimalbereich reicht von 0 bis 2^31 - 1.
        2. Negativer Bereich : Das Vorzeichenbit ist 1 und die restlichen 31 Bits können Werte von 100...000 (31 0s) bis 111...111 (31 1s) darstellen. Unter diesen stellt die Zweierkomplementzahl 100...000 (31 Nullen) -2^31 dar, und der entsprechende Dezimalwert ist -2^31. Die Zweierkomplementzahl 111...111 (31 Einsen) stellt -1 dar, und der entsprechende Dezimalwert ist -1.
         Positiver Zahlenbereich: 1 ~ 2^31 - 0; negativer Zahlenbereich: -1 ~ -2^31, die Gesamtzahl beträgt immer noch 2^32 verschiedene Zustände. Daher beträgt der Wertebereich einer Ganzzahl vom Typ int normalerweise -2147483648 ~ 2147483647 (d. h. -2^31 ~ 2^31 - 1).

3. Wie viele Bytes belegt der Typ int?

Wie viele Bytes belegt 64-Bit-Integer? Der Unterschied zwischen den Ganzzahltypen int, long und long long
Wie viele Bytes belegt 64-Bit-Int? [Interview] Wie viele Bytes belegt Int?
Der Unterschied zwischen 32-Bit- und 64-Bit-Maschinen und die Anzahl der von grundlegenden Datentypen belegten Bytes
Integer-Typ der C-Sprache (einschließlich Wertebereich und Länge)
Wie viele Bytes belegt der Typ int?
Datengröße vom Typ int und Zeigertyp auf verschiedenen Plattformen
Java sizeof()-Problem
Variablen vom Typ Int in Python können Ganzzahlen jeder Größe speichern

Zusammenfassen:

  1. Die Datentypgröße von C und C++ wird durch den Kompilierungsstandard, den Compiler, die Bitanzahl des Betriebssystems usw. beeinflusst.
  2. Die Datentypgröße von Java und Python wird durch die Sprachspezifikation oder Interpreterimplementierung bestimmt und wird nicht durch Faktoren wie die Bitanzahl des Compilers und des Betriebssystems beeinflusst.
  3. Der Hauptgrund für diesen Designunterschied besteht darin, dass C und C++ Systemprogrammiersprachen sind, die normalerweise direkt mit der Hardware interagieren müssen. Daher variiert die Größe der Datentypen je nach zugrunde liegender Umgebung, während Java und Python hochentwickelt sind. Level-Programmiersprachen mit einem höheren Abstraktionsniveau. Das Designziel ist plattformübergreifende Konsistenz.

4. Empfehlen

Wieder empfohlen
Dritter Teil: Der Ursprung des Problems