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.