2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
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).
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).
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:
- Die Datentypgröße von C und C++ wird durch den Kompilierungsstandard, den Compiler, die Bitanzahl des Betriebssystems usw. beeinflusst.
- 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.
- 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.