Wertebereiche und Datentypen

 

Wertebereiche

Wortbreite Wertebereiche mit Vorzeichen Wertebereich ohne Vorzeichen
8 Bit -128 ... 127 0 ... 255
16 Bit -32.768 ... 32.767 0 ... 65.535
32 Bit -231 ... 231 -1 0 ... 4.294.967.295
64 Bit -263 ... 263 -1 0 ... 18.446.744.073.709.551.615

Der Wertebereich ist generell nur durch den Hauptspeicher eingeschränkt, den ein Prozess benutzen kann.

Datentypen (typisch)

Datentyp Wortbreite Speicher
short 8 Bit 1 Byte
int 16 Bit 2 Byte
long 32 Bit 4 Byte
longlong 64 Bit 8 Byte

Die angegebenen Wortbreiten sind typische Werte, die je nach Computer- bzw. Prozessorsystem unterschiedlich ausfallen. Der Datentyp int kann sowohl 8, 16, 32 Bit oder auch eine andere Wortbreite einnehmen.
Der Datentyp int (Integer) sollte so breit (Anzahl der Bits) sein, wie die Verarbeitungsbreite des Prozessors ist. Die Datentypen long und longlong werden dann nur durch die Software unterstützt, was bei Berechnungen länger dauert.

Datentypen (Java)

Datentyp Wortbreite Speicher
byte 8 Bit 1 Byte
short 16 Bit 2 Byte
int 32 Bit 4 Byte
long 64 Bit 8 Byte

Während Datentypen je nach System und Prozessor unterschiedliche Wortbreiten haben können, wurde in Java die Wortbreite bei den Datenypen festgelegt.

Überlauf des Wertebereichs

  1011 -> 11
+ 1000 ->  8
------
10011 ->  3

Wenn man beispielsweise zwei 4-Bit-Zahlen addiert und dabei ein Übertrag entsteht, dann ist das Ergebnis falsch, weil der Übertrag bzw. Überlauf ignoriert wird. Bevor ein Ergebnis ausgegeben wird, muss das sogenannte Carry-Bit überprüft werden. Ist es gesetzt (1), dann ist das Ergebnis übergelaufen und demnach falsch.
Es gibt verschiedene Möglichkeiten auf einen Überlauf zu reagieren. Der Überlauf wird zum Beispiel ignoriert und verworfen, das Programm wird unterbrochen oder der Datentyp wird von der Programmiersprache automatisch geändert.