Verschiedene CPUs unterstützen unterschiedliche integrale Datentypen. In der Regel unterstützt Hardware sowohl signierte als auch nicht signierte Typen, jedoch nur einen kleinen, festen Satz von Breiten.
Die obige Tabelle listet integrale Typbreiten auf, die in der Hardware von gängigen Prozessoren unterstützt werden. Programmiersprachen auf hohem Niveau bieten mehr Möglichkeiten. Es ist üblich, einen integralen Typ mit doppelter Breite zu haben, der doppelt so viele Bits hat wie der größte hardwareunterstützte Typ., Viele Sprachen haben auch Bitfeldtypen (eine bestimmte Anzahl von Bits, die normalerweise kleiner als die maximale hardwareunterstützte Breite sein müssen) und Bereichstypen (die nur die Ganzzahlen in einem bestimmten Bereich darstellen können).
Einige Sprachen wie Lisp, Smalltalk, REXX, Haskell, Python und Raku unterstützen Ganzzahlen mit beliebiger Genauigkeit (auch als Ganzzahlen mit unendlicher Genauigkeit oder Bignums bezeichnet)., In anderen Sprachen, die dieses Konzept als Konstrukt der obersten Ebene nicht unterstützen, stehen möglicherweise Bibliotheken zur Verfügung, um sehr große Zahlen mithilfe von Arrays kleinerer Variablen darzustellen, z. B. Javas BigInteger-Klasse oder Perls „bigint“ – Paket. Diese verwenden so viel Speicher des Computers, wie zum Speichern der Zahlen erforderlich ist; Ein Computer hat jedoch nur eine begrenzte Speichermenge, sodass auch sie nur eine endliche Teilmenge der mathematischen ganzen Zahlen darstellen können. Diese Schemata unterstützen sehr große Zahlen, zum Beispiel könnte ein Kilobyte Speicher verwendet werden, um Zahlen mit einer Länge von bis zu 2466 Dezimalstellen zu speichern.,
Ein Boolescher oder Flag-Typ ist ein Typ,der nur zwei Werte darstellen kann: 0 und 1, die normalerweise mit false bzw. Dieser Typ kann mit einem einzelnen Bit im Speicher gespeichert werden, erhält jedoch häufig ein vollständiges Byte, um die Adressierung und Zugriffsgeschwindigkeit zu vereinfachen.
Eine Vier-Bit-Menge wird als Knabbern (beim Essen, kleiner als ein Biss) oder Knabbern (ein Wortspiel in Form des Wortes Byte) bezeichnet. Ein Knabbern entspricht einer Ziffer in Hexadezimal und enthält eine Ziffer oder einen Vorzeichencode in binärcodierter Dezimalzahl.,
Bytes und Oktette
Hauptartikel: Byte und Oktett (computing)
Der Begriff Byte bedeutete zunächst „die kleinste adressierbare Speichereinheit“. In der Vergangenheit, 5-, 6-, 7-, 8-, und 9-Bit-Bytes wurden alle verwendet. Es gab auch Computer, die einzelne Bits adressieren konnten („Bit-adressierte Maschine“) oder die nur 16 – oder 32-Bit-Mengen adressieren konnten („Wort-adressierte Maschine“). Der Begriff Byte wurde in der Regel überhaupt nicht in Verbindung mit bit – und wortadressierten Maschinen verwendet.
Der Begriff Oktett bezieht sich immer auf eine 8-bit-Menge., Es wird hauptsächlich im Bereich der Computernetzwerke verwendet, bei denen Computer mit unterschiedlichen Byte-Breiten kommunizieren müssen.
Im modernen Gebrauch bedeutet Byte fast immer acht Bits, da alle anderen Größen nicht mehr verwendet werden; So ist Byte zum Synonym für Oktett geworden.
WordsEdit
Praktisch alle neuen Desktop-Prozessoren können 64 – Bit-Wörter verwenden, obwohl eingebettete Prozessoren mit 8-und 16-Bit-Wortgröße immer noch üblich sind. Die 36-Bit-Wortlänge war in den frühen Tagen von Computern üblich.,
Eine wichtige Ursache für die Nichtübertragbarkeit von Software ist die falsche Annahme, dass alle Computer die gleiche Wortgröße wie der vom Programmierer verwendete Computer haben. Wenn beispielsweise ein Programmierer, der die Sprache C verwendet, eine Variable, die zum Speichern von Werten größer als 215-1 verwendet wird, fälschlicherweise als int deklariert, schlägt das Programm auf Computern mit 16-Bit-Ganzzahlen fehl. Diese Variable sollte so lange deklariert worden sein, die mindestens 32 Bit auf jedem Computer hat., Programmierer gehen möglicherweise auch fälschlicherweise davon aus, dass ein Zeiger ohne Informationsverlust in eine Ganzzahl konvertiert werden kann, was auf (einigen) 32-Bit-Computern funktionieren kann, auf 64-Bit-Computern mit 64-Bit-Zeigern und 32-Bit-Ganzzahlen jedoch fehlschlägt. Dieses Problem wird von C99 in stdint behoben.h in der form von intptr_t
.
Short integerEdit
Eine kurze Ganzzahl kann eine ganze Zahl darstellen, die weniger Speicherplatz benötigt, während sie einen kleineren Bereich aufweist, verglichen mit einer Standard-Ganzzahl auf demselben Computer.
In C wird es mit kurz bezeichnet., Es muss mindestens 16 Bit betragen und ist oft kleiner als eine Standard-Ganzzahl, dies ist jedoch nicht erforderlich. Ein konformes Programm kann davon ausgehen, dass es Werte zwischen −(215-1) und 215-1 sicher speichern kann, aber es kann nicht davon ausgehen, dass der Bereich nicht größer ist. In Java ist ein Short immer eine 16-Bit-Ganzzahl. In der Windows-API ist der Datentyp SHORT auf allen Computern als vorzeichenbehaftete 16-Bit-Ganzzahl definiert.,>−32,768
Long integerEdit
A long integer can represent a whole integer whose range is greater than or equal to that of a standard integer on the same machine.,
In C wird es mit long bezeichnet. Es muss mindestens 32 Bit betragen und kann größer als eine Standard-Ganzzahl sein oder auch nicht. Ein konformes Programm kann davon ausgehen, dass es Werte zwischen −(231-1) und 231-1 sicher speichern kann, aber es kann nicht davon ausgehen, dass der Bereich nicht größer ist.
Lange longEdit
In der C99-Version der Programmiersprache C und der C++11-Version von C++ wird ein long long
– Typ unterstützt, der die doppelte Mindestkapazität des Standards hat long
. Dieser Typ wird nicht von Compilern unterstützt, bei denen C-Code mit dem vorherigen C++ – Standard C++03 kompatibel sein muss, da der Long Long-Typ in C++03 nicht vorhanden war. Für einen ANSI / ISO-kompatiblen Compiler müssen die Mindestanforderungen für die angegebenen Bereiche, also −(263-1) bis 263-1 für signiert und 0 bis 264-1 für nicht signiert, erfüllt sein; Eine Erweiterung dieses Bereichs ist jedoch zulässig., Dies kann ein Problem beim Austausch von Code und Daten zwischen Plattformen oder beim direkten Hardwarezugriff sein. Daher gibt es mehrere Sätze von Headern, die plattformunabhängige exakte Breitenarten bereitstellen. Die C-Standardbibliothek bietet stdint.h; Dies wurde in C99 und C++11 eingeführt.