Ganzzahl (Computer)
In der Informatik wird eine Ganzzahl (oder in ihrer englischen Form Integer , oft mit int abgekürzt ) als jede Art von Daten definiert , die eine Teilmenge der mathematischen Menge von Ganzzahlen darstellen kann .
Wert und Darstellung
Der Wert eines ganzzahligen Datentyps besteht aus der ganzen Zahl, der er entspricht. Seine Darstellung besteht aus der Art und Weise, wie es im Speicher des Computers gespeichert ist. Ganzzahlige Daten können vorzeichenbehaftet oder vorzeichenlos sein , was ihre Fähigkeit zur Darstellung negativer Zahlen beeinträchtigt.
Die gebräuchlichste Methode zur Darstellung dieses Datentyps ist eine Bitfolge unter Verwendung des Binärsystems . Die Reihenfolge der Bytes innerhalb der Zeichenfolge kann variieren. Die Länge oder Genauigkeit ist die Anzahl der Bits, die in der Darstellung verwendet werden. Ein ganzzahliger Datentyp mit der Genauigkeit n kann bis zu 2 n Werte darstellen; Beispielsweise kann ein vorzeichenloser Typ die Zahlen 0 bis 2n -1 darstellen.
Es gibt drei verschiedene Möglichkeiten, negative Zahlen in einem Binärsystem darzustellen. Am gebräuchlichsten ist das „ Zweierkomplement “, mit dem sich Zahlen von -2 (n-1) bis 2 (n-1) -1 darstellen lassen. Diese Methode ist bequem, weil sie eine Eins-zu-eins-Entsprechung zwischen Werten und Darstellungen herstellt und weil bei Additions- und Subtraktionsoperationen nicht zwischen vorzeichenbehafteten und vorzeichenlosen Werten unterschieden werden muss. Die anderen verwendeten Methoden sind die von "Vorzeichen und Betrag" und "Einerkomplement" (siehe Darstellung relativer Zahlen ).
Gängige Integer-Datentypen
| Bisschen | Vorname | Zielfernrohr | Beschäftigungen |
|---|---|---|---|
| 8 | Byte , Oktett | Vorzeichenbehaftet: −128 bis +127 Ohne Vorzeichen : 0 bis +255 |
ASCII- Zeichen , C-Zeichen (Minimum), Java-Bytes |
| 16 | Halbes Wort, Wort | Vorzeichenbehaftet: –32.768 bis +32.767 Ohne Vorzeichen : 0 bis +65.535 |
UCS-2- Zeichen , int C short (mindestens), Integer C (mindestens), Java-Zeichen, Java short |
| 32 | Wort, Doppelwort (doppelt), lang | Mit Vorzeichen: −2.147.483.648 bis +2.147.483.647 Ohne Vorzeichen : 0 bis +4.294.967.295 |
UCS-4- Zeichen , True Color mit Alpha, C int (normal), C long int (Minimum), Java int |
| 64 | doppeltes, langes, vierfaches Wort | Mit Vorzeichen: von −9.223.372.036.854.775.808 bis +9.223.372.036.854.775.807 Ohne Vorzeichen : von 0 bis +18.446.744.073.709.551.615 |
C long int (auf Linux 64-Bit-Systemen [1] ), C99 long long int (Minimum), Java long |
| 128 | Mit dem Vorzeichen: von –170.141.183.460.469.231.731.687.303.715.884.105.728 bis +170.141.183.460.469.231.731.67.303.88888.105.72.727. .455 |
C int __attribute__ ((mode (TI))) (auf 64-Bit-Systemen mit gcc ) | |
| n | N -Bit- Ganzzahl | Vorzeichenbehaftet: -2 ^ {n-1} bis 2 ^ {n-1} -1 Ohne Vorzeichen: 0 bis 2 ^ {n} -1 |
Typischerweise unterstützt jede CPU eine kleine Anzahl von Datentypen, sowohl mit Vorzeichen als auch ohne Vorzeichen. Die obige Tabelle zeigt die Typen, die von den meisten Prozessoren auf dem Hardwaremarkt unterstützt werden . Höhere Programmiersprachen erlauben beispielsweise Zahlen, die aus der doppelten Anzahl von Bits bestehen, verglichen mit der von der Hardware maximal unterstützten Anzahl .
Einige Sprachen, wie LISP , REXX und Haskell , unterstützen Zahlen mit "beliebiger Genauigkeit" (auch bekannt als Ganzzahlen mit "unendlicher Genauigkeit" oder bignum ); andere Sprachen haben Bibliotheken, die es ermöglichen, Zahlen durch Sätze kleinerer Variablen darzustellen, wie z . B. BigInteger von Java . Diese Methoden verwenden für die Darstellung der Zahl so viel Speicher wie nötig, aber der Speicher von Computern ist endlich, und daher erlauben auch diese Methoden, eine endliche Menge von ganzen Zahlen darzustellen. Mit 8 KB Speicher ist es jedoch möglich, Zahlen mit 2466 Ziffern darzustellen.
Ein boolescher oder Flag -Datentyp kann nur zwei Werte darstellen: 0 und 1, normalerweise verbunden mit false bzw. true . Dieser Typ kann auf einem einzelnen Bit gespeichert werden, aber im Allgemeinen wird ein ganzes Byte verwendet, um die Adressierung zu erleichtern und den Zugriff zu beschleunigen.
Eine Vier-Bit-Zeichenfolge wird als Nibble bezeichnet : Eine davon entspricht einer Ziffer in hexadezimaler Codierung und enthält eine Ziffer oder einen Vorzeichencode in binärer Dezimalcodierung .
Eine lange Ganzzahl kann eine positive oder negative Ganzzahl innerhalb eines Bereichs enthalten, der gleich oder größer als der einer normalen Ganzzahlvariablen auf derselben Plattform ist. In der Praxis ist es üblich, dass eine lange Ganzzahl den doppelten oder denselben Platz wie eine normale Ganzzahl einnimmt, obwohl dies nicht erforderlich ist. Eine mit dem Typ Long Integer in einer Programmiersprache definierte Variable kann eine andere Größe haben als eine mit einem ähnlichen Typ in einer anderen Sprache definierte Variable. Darüber hinaus ist die Größe in einigen Sprachen wie Java für alle Plattformen festgelegt , während sie in anderen vom Maschinentyp abhängt.
Das Folgende ist eine Tabelle der häufigsten Long-Integer -Werte in verschiedenen Programmiersprachen:
| Programmiersprache | Plattform | Modellname | Leerzeichen in Byte | Mindestwert | Maximalwert |
|---|---|---|---|---|---|
| VB | Windows | Long |
4 | −2.147.483.648 oder −2 31 |
2.147.483.647 oder 2 31 –1 |
| VBA | Windows , MacOS | Long |
4 | −2.147.483.648 oder −2 31 |
2.147.483.647 oder 2 31 –1 |
| VB.NET | alle Plattformen | long |
8 | −9.223.372.036.854.775.808
oder −2 63 |
9.223.372.036.854.775.807
oder 2 63 −1 |
| Java | alle Plattformen | long |
8 | −9.223.372.036.854.775.808
oder −2 63 |
9.223.372.036.854.775.807
oder 2 63 −1 |
| C # | alle Plattformen | long |
8 | −9.223.372.036.854.775.808
oder −2 63 |
9.223.372.036.854.775.807
oder 2 63 −1 |
| PHP | alle Plattformen | $ |
8 | −9.223.372.036.854.775.808
oder −2 63 |
9.223.372.036.854.775.807
oder 2 63 −1 |
Die Windows-API definiert den Typ LONGals 4-Byte-Ganzzahl. Dies gilt aus Gründen der Abwärtskompatibilität gleichermaßen für 16-, 32- und 64-Bit-Systeme .
Zeiger
Ein Zeiger besteht oft, aber nicht immer, aus einer ganzen Zahl einer bestimmten Länge. Dies wird oft am meisten vom System in Hardware unterstützt . Der Wert der Zahl ist die Adresse, auf die der Zeiger zeigt.
Byte und Oktett
Der Begriff Byte bezog sich zunächst auf die kleinste Menge an adressierbarem Speicher : Früher wurden 5,6,7,8 und 9-Bit-Bytes verwendet. Es wurden auch Computer geschaffen, die einzelne Bits oder nur Wörter von 16 oder 32 Bit adressieren konnten, für die der Begriff Byte überhaupt nicht verwendet wurde.
Der Begriff "Oktett" bezieht sich nur auf 8-Bit-Speichermengen. Es wird hauptsächlich für Computernetzwerke verwendet , in denen Computer, die mehrere Formate verwenden, möglicherweise kommunizieren müssen.
Derzeit ist der Begriff "Oktett" zusammen mit den anderen Formaten in Vergessenheit geraten und wird im Allgemeinen mit dem Begriff "Byte" identifiziert.
Bytes werden verwendet, um eine beliebige Menge an Rechendaten zu messen, sei es eine 50-Byte-Textzeichenfolge, eine 100-KB- Datei , ein 128 -MB- RAM -Modul oder eine 30-GB-Festplatte . Die für die Maßeinheiten verwendeten Präfixe sind oft die gleichen wie im Internationalen System , aber die Größen sind unterschiedlich; Dies ist besonders wichtig für Festplatten, deren Hersteller ihre Kapazität mit SI-Einheiten anpreisen und sie leistungsfähiger erscheinen lassen, als sie tatsächlich sind (siehe Artikel über binäre Präfixe ).
Wort
Der Begriff Wort wird in der Informatik für kleine Gruppen von Bits verwendet, die gleichzeitig von den CPUs einer bestimmten Architektur verarbeitet werden können . Die Größe des Wortes ist spezifisch für letzteres. Es wurden Wörter unterschiedlicher Größe verwendet, z. B. 6, 8, 12, 16, 18, 24, 32, 36, 39, 48, 60 und 64-Bit. Aufgrund der Abhängigkeit von der Architektur wird die Größe des Wortes unabhängig von der Kompatibilität nachfolgender Versionen durch die erste CPU einer Familie bestimmt. Die Bedeutung der abgeleiteten Begriffe Halbwort , Doppelwort , Langwort , Vierfachwort hängt auch immer von der CPU und dem Betriebssystem ab . Ab 2004 werden 32-Bit-Wörter in allgemein verwendeten Computern am häufigsten verwendet, während 64-Bit-Wörter in großen Systemen verwendet werden. Viele eingebettete Prozessoren verwenden immer noch 8- und 16-Bit-Wörter, während 36-Bit-Wörter oder zumindest keine Vielfachen von 8 Bit, die in den frühen Tagen der Computer verwendet wurden, zusammen mit Nicht-8-Bit-Bytes verschwunden sind.
Notizen
- ^ Agner Fog, Aufrufkonventionen für verschiedene C++-Compiler und Betriebssysteme: Kapitel 3, Datendarstellung ( PDF ), auf agner.org , 16. Februar 2010. Abgerufen am 30. August 2010 .