Integer (Datentyp)

Integer (Datentyp)

Mit Integer (ˈɪnteːɡɐ oder ˈɪntɪdʒə, englisch für ganze Zahl von lat. numerus integer) wird in der Informatik ein Datentyp bezeichnet, der ganzzahlige Werte speichert. Der Wertebereich ist endlich. Berechnungen mit Integern sind in der Regel exakt. Lediglich ein Überlauf kann durch Überschreiten des zulässigen Wertebereichs auftreten. Als grundlegender arithmetischer Datentyp sind Integer in der Hardware fast aller Rechenanlagen vorhanden und in nahezu jeder Programmiersprache verfügbar. Meist werden sogar mehrere Integerarten bereitgestellt, die sich in der Darstellung, der Länge oder dem Vorhandensein eines Vorzeichens unterscheiden. Die implementierte Arithmetik mit Integern ist bisher nicht genormt und weist oft sprachabhängige (JavaC) oder sogar compilerabhängige (C – Reihenfolge der Auswertung von Ausdrücken) Eigenheiten auf. Ein Normungsversuch liegt mit der Language Independent Arithmetic vor.

Inhaltsverzeichnis

Darstellungen von Integern

Von exotischen Darstellungen[1] abgesehen, gibt es drei Möglichkeiten zur Speicherung von Integer-Variablen. Das Vorzeichen – soweit vorhanden – kann man in allen Darstellungen an einer bestimmten Ziffer ablesen.

In der Betrags-Vorzeichendarstellung werden das Vorzeichen und der Betrag getrennt gespeichert und verarbeitet.

Bei b-Komplementzahlen wird genau die halbe Teilmenge der Zahlen mit großem Betrag als negative Zahlen interpretiert, ohne dass die Arithmetik positiver Zahlen wesentlich geändert wird. Das führt zu einfachen Schaltungen und zu einer einfachen Regel für Vorzeichenänderungen (ziffernweises b-Komplement und anschließende Erhöhung der Zahl). Zwischen der Arithmetik mit Zweierkomplementzahlen und rein positiven Binärzahlen besteht kein Unterschied. Es existiert eine bijektive Abbildung zwischen den Darstellungen und den Werten (kein Wert hat zwei Darstellungen). Man kann b-Komplementzahlen wie technische Zähler (Kilometerzähler im Auto) interpretieren. Nachteil von b-Komplementzahlen ist, dass der kleinste negative Wert kein positives Gegenstück in der Darstellung hat.

Bei (b−1)-Komplementzahlen vereinfacht man dagegen die Regel für Vorzeichenänderungen (die anschließende Erhöhung fällt weg) und muss dafür in der Arithmetik mehr Fallunterscheidungen und vor allem zwei Darstellungen der Null (±0) berücksichtigen.

In modernen Rechenanlagen ist die Basis b praktisch ausnahmslos b = 2 und die Darstellung im Zweierkomplement hat sich weitgehend durchgesetzt.

Dezimale Äquivalente zum Zweier- und Einerkomplement im Binärsystem wären Zehner- und Neunerkomplementzahlen.

Von manchen Herstellern wird oft unter Berufung auf Kundenwünsche (Banken) noch ein Dezimalformat gepflegt. Hier wird fast ausnahmslos eine Betrags-Vorzeichendarstellung gewählt und der Betrag in der sogenannten BCD-Form (binary coded decimal) gespeichert.

Übersicht

Zweierkomplement Einerkomplement Betrags-Vorzeichendarstellung BCD-Zahlen
Basis 2 2 2 10
Eindeutigkeit umkehrbar eindeutig 2 Darstellungen für den gleichen Wert (±0) 2 Darstellungen für den gleichen Wert (±0) Darstellungen ohne Wert
Wertebereich maximal, asymmetrisch symmetrisch symmetrisch symmetrisch

Beispiele

(die Beispielzahlen sind für 9 Bit ausgelegt, da so zweistellige BCD-Zahlen möglich sind, Darstellung MSB → LSB):

Zweierkomplement Einerkomplement Betrags-Vorzeichendarstellung BCD-Zahlen
Maximum 0 1111 1111 (255) 0 1111 1111 (255) 0 1111 1111 (255) 0 1001 1001 (99)
17 0 0001 0001 0 0001 0001 0 0001 0001 0 0001 0111
5 0 0000 0101 0 0000 0101 0 0000 0101 0 0000 0101
1 0 0000 0001 0 0000 0001 0 0000 0001 0 0000 0001
0 0 0000 0000 0 0000 0000 0 0000 0000 0 0000 0000
−0 1 1111 1111 1 0000 0000 1 0000 0000
−1 1 1111 1111 1 1111 1110 1 0000 0001 1 0000 0001
−2 1 1111 1110 1 1111 1101 1 0000 0010 1 0000 0010
−5 1 1111 1011 1 1111 1010 1 0000 0101 1 0000 0101
−17 1 1110 1111 1 1110 1110 1 0001 0001 1 0001 0111
Minimum+1 1 0000 0001 (−255) 1 0000 0001 (−254) 1 1111 1110 (−254) 1 1001 1000 (−98)
Minimum 1 0000 0000 (−256) 1 0000 0000 (−255) 1 1111 1111 (−255) 1 1001 1001 (−99)

Häufige Speicherformen

Ein Integer besteht in der Regel aus 8, 16, 32, 64 oder 128 Bits (also 1, 2, 4, 8 oder 16 Bytes) – entsprechend der Wortbreite der jeweiligen CPU. Historisch wurden auch andere Werte (12, 48, … Bit) verwendet. In Programmiersprachen sind die Bezeichnungen dieser Zahlen teilweise genormt: In Java werden sie als byte (8), short (16), int (32) und long (64 Bit) bezeichnet. In C gibt es dieselben Bezeichnungen, jedoch sind die Größen architekturabhängig, mit C99 wurden architekturunabhängige Typen definiert (stdint.h). Dafür unterstützt C auch die vorzeichenlose (unsigned) Variante, die von den meisten Mikrocontrollern und Mikroprozessoren in Hardware unterstützt werden.

Rechenanlagen verarbeiten Integer meist schneller als Gleitkommazahlen, da oft weniger Bits zu verarbeiten sind (die kleinste IEEE-754-Gleitkommazahl hat 32 Bit) und die Verarbeitung des Exponenten entfällt, was Rechenzeit und Speicherplatz einspart. Zusätzlich bietet eine reine Festkommaarithmetik (Integer basierend) gegenüber Gleitkommaarithmetik den Vorteil der exakten Verarbeitung (innerhalb fester Dynamikgrenzen), datenabhängige Effekte wie Denormalisierung oder Absorption treten nicht auf[2]. Für interne Software von Geldinstituten wird deswegen häufig reine Integerverarbeitung gefordert, wie es z. B. bei GnuCash realisiert ist[3].

Bei der Ablage im Speicher taucht neben der Notwendigkeit, die Bits der Zahlendarstellung überhaupt abzulegen, noch das Problem der Bytereihenfolge und Anordnung auf.

Maximaler Wertebereich von Integer

Größe
(Bit)
Typische Namen Vorzeichen Grenzen des Wertebereichs (Zweierkomplement) Dezimalstellen
(ohne Vorzeichen)
min max
8 char, Byte/byte signed −128 127 3
unsigned 0 255 3
16 Word, Short/short, Integer signed −32.768 32.767 5
unsigned 0 65.535 5
32 DWord/Double Word, int, long (Windows auf 16/32/64-Bit Systemen;[4] Unix/Linux/C99 auf 16/32-Bit Systemen[4]) signed −2.147.483.648 2.147.483.647 10
unsigned 0 4.294.967.295 10
64 Int64, QWord/Quadword, long long, Long/long (Unix/Linux/C99 auf 64-Bit Systemen[4][5][6]) signed −9.223.372.036.854.775.808 9.223.372.036.854.775.807 19
unsigned 0 18.446.744.073.709.551.615 20
128 Int128, Octaword, Double Quadword signed ≈ −1,70141·1038 ≈ 1,70141·1038 39
unsigned 0 ≈ 3,40282·1038 39
n BigInteger signed −2n−1 2n−1 − 1 ⌈log10 2n−1
unsigned 0 2n − 1 ⌈log10 2n

Überlauf von Integer

Überlauf bei vorzeichenlosen Integerzahlen (Bitlänge 3)
Überlauf bei Integerzahlen (Bitlänge 3+1)

Auf Grund des begrenzten Wertebereiches des Integerdatenformates tritt das Phänomen Überlauf auf. Dies ist nicht nur ein theoretischer Fakt, sondern tritt auch in der Praxis auf (vgl. Mathematische Operation Fakultät). Bei vorzeichenbehafteten Integerzahlen ändert sich sogar das Vorzeichen beim Überschreiten des Wertebereiches.

Siehe auch

Literatur

Einzelnachweise

  1. Knuth: Band 2. S. 195, 4.1 Positional number systems; S. 284, 4.3.2 Modular arithmetic
  2. David Goldberg: What Every Computer Scientist Should Know About Floating-Point Arithmetic. In: ACM Computing Surveys. 23, 1991, S. 5-48. doi:10.1145/103162.103163. Abgerufen am 2. September 2010.
  3. What’s new in GnuCash 1.6?. gnucash.org. Abgerufen am 3. September 2010.
  4. a b c Agner Fog (16. Februar 2010): Calling conventions for different C++ compilers and operating systems: Chapter 3, Data Representation. Abgerufen am 30. August 2010.
  5. Eric Giguere (18. Dezember 1987): The ANSI Standard: A Summary for the C Programmer. Abgerufen am 4. September 2010.
  6. Randy Meyers (1. Dezember 2000): The New C: Integers in C99, Part 1. drdobbs.com. Abgerufen am 4. September 2010.

Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Integer-Datentyp — Integer Datentyp,   Datentyp, dessen Wertebereich innerhalb dem des Datentyps Integer liegt …   Universal-Lexikon

  • Integer — Das Substantiv Integer (engl. integer, „Ganzzahl“) bezeichnet einen Datentyp in der Informatik, siehe Integer (Datentyp) eine Ganze Zahl in der Mathematik Zum Adjektiv integer (lat. für „unberührt, unversehrt“) siehe: Integrität (Ethik)… …   Deutsch Wikipedia

  • Datentyp — Datentyp,   Festlegung für den Wertebereich einer Variablen. Grundsätzlich kann man zwischen numerischen und alphanumerischen Datentypen sowie Zeigern und Objektvariablen unterscheiden.   Numerische Datentypen werden als Zahlenwert interpretiert …   Universal-Lexikon

  • Datentyp — Formal bezeichnet ein Datentyp in der Informatik die Zusammenfassung von Objektmengen mit den darauf definierten Operationen. Dabei werden durch den Datentyp des Datensatzes unter Verwendung einer so genannten Signatur ausschließlich die Namen… …   Deutsch Wikipedia

  • Integer overflow — Ein Ganzzahlüberlauf (englisch integer overflow) tritt auf, wenn ein Computer Berechnungen mit begrenzter Stellenzahl durchführt und das Rechenergebnis zur Darstellung mehr Stellen erfordert. Die Stellenanzahl und damit der Wertebereich ist durch …   Deutsch Wikipedia

  • integer — moralisch einwandfrei; unbestechlich; nicht käuflich; nicht korrupt * * * in|te|ger 〈Adj.〉 1. unversehrt, unberührt 2. rein, makellos, rechtschaffen, redlich ● ein integrer Charakter [lat., „unberührt, unversehrt“] * * * in|te|ger <Adj.; …grer …   Universal-Lexikon

  • Ordinaler Datentyp — Formal bezeichnet ein Datentyp in der Informatik die Zusammenfassung von Objektmengen mit den darauf definierten Operationen. Dabei werden durch den Datentyp des Datensatzes unter Verwendung einer so genannten Signatur ausschließlich die Namen… …   Deutsch Wikipedia

  • Primitiver Datentyp — Formal bezeichnet ein Datentyp in der Informatik die Zusammenfassung von Objektmengen mit den darauf definierten Operationen. Dabei werden durch den Datentyp des Datensatzes unter Verwendung einer so genannten Signatur ausschließlich die Namen… …   Deutsch Wikipedia

  • Short (Datentyp) — Mit Integer (ˈɪntɪdʒə, englisch für ganze Zahl) wird in der Informatik ein Datentyp bezeichnet, der ganzzahlige Werte speichert. Der Wertebereich ist endlich. Berechnungen mit Integern sind in der Regel exakt. Lediglich ein Überlauf kann durch… …   Deutsch Wikipedia

  • Char (Datentyp) — Char oder Character ([kæɹ, kʌɹ], von englisch character, „Zeichen“) ist ein Datentyp (in vielen Programmiersprachen) für Datenbereiche/Felder, deren Elemente jeweils ein Zeichen repräsentieren. Inhaltsverzeichnis 1 Datentyp 2 Zeichenkodierung …   Deutsch Wikipedia


Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”

We are using cookies for the best presentation of our site. Continuing to use this site, you agree with this.