InfoHome | Themen | Projekte | Links | Software |
|
Einfache Datentypen in Java
Der Wertebereich bei den ganzzahligen Datentypen reicht von -2n-1 bis 2n-1-1, wobei n für die Anzahl der zur Verfügung stehenden Bits steht. Exkurs: DualzahlenIm Dualsystem (auch Binärsystem) gibt es statt 10 (wie im Dezimalsystem) nur 2 verschiedene Ziffern, die in der Regel mit 0 und 1 bezeichnet werden. Ein Beispiel für eine 4-Bit Dualzahl wäre die Zahl 01102. Der Index 2 zeigt hier an, dass es sich um eine Dualzahl handelt. Umwandlung vom Dualsystem ins DezimalsystemMöchte man eine Zahl von Dualsystem ind Dezimalsystem umrechnen, schreibt man sie einfach als Summe von Produkten aus den Ziffern 0 und 1 mit Potenzen zur Basis 2. Dabei sind die Zweierpotenzen den Stellen folgendermaßen zugeordnet:
Der Exponent der Zweierpotenz wird von rechts nach links (beginnend mit 0) je Stelle um Eins größer. Die Umrechnung ergibt sich nun wie folgt: 01102 = 0 * 23 + 1 * 22 + 1 * 21 + 0 * 20 = 0 + 4 + 2 + 0 = 610. Die 4-Bit Dualzahl 0110 entspricht also der Dezimalzahl 6. Übrigens lassen sich auch Dezimalzahlen entsprechend zerlegen: 121 = 1 * 102 + 2 * 101 + 1 * 100 = 100 + 20 + 1 = 121. Von rechts nach links geben die Ziffern einer Dezimalzahl die Einer, Zehner, Hunderter, usw. an. Bei einer Dualzahl entsprechend die Einer, Zweier, Vierer, Achter, usw... Umwandlung vom Dezimalsystem ins DualsystemUm eine Dezimalzahl ins Dualsystem umzurechnen geht man folgendermaßen vor:
Beispiel: 13410
Die Dualzahldarstellung erhält man nun, indem man die Reste von unten nach oben hintereinander schreibt: 13410 = 100001102 Negative Dualzahlen: Darstellung im ZweierkomplementDie gebräuchlichste Methode zur Codierung negativer Dualzahlen besteht in der 2er-Komplement-Darstellung. Dabei wird das erste (führende) Bit als Vorzeichenbit verwendet. Positive Zahlen haben eine führende Null. Die Dualzahl wird auf den folgenden Stellen genauso gebildet wird, wie bei den bisher betrachteten vorzeichenlosen Dualzahlen. Beispiel: Die Zahl 610 hat die Darstellung 01102. Negative Zahlen haben eine führende Eins. Im Unterschied zu der obigen Reihenentwicklung geht das führende Bit (das ja mit der höchsten Zweierpotenz multipliziert wird und deswegen auch "most significant bit (MSB)" genannt wird) als negativer Summand in die Potenzreihe ein. Die Dualzahl 11002 (2er-Komplement-Darstellung) entspricht also der Dezimalzahl -1 * 23 + 1 * 22 + 0 * 21 + 0 * 20 = -8 + 4 = -4. Die Umrechnung kann auch nach folgendem Verfahren durchgeführt werden:
Das Verfahren ist vor allem hilfreich, wenn man es in der umgekehrten Richtung anwendet und zur Umwandlung vom Dezimalsystem ins 2er-Komplement einsetzt. Wir gehen wieder von -410 aus.
Addition von Dualzahlen im 2er-KomplmentDie Codierung im 2er-Komplement ist gängig, da sie das Addieren und Subtrahieren von Dualzahlen (fast) wie gewohnt ermöglicht:
Die Addition klappt problemlos, wenn man auftretende Überläufe (wie im dritten und vierten Beispiel) einfach ignoriert. Außerdem muss man darauf achten, dass der Wertebereich nicht verlassen wird:
0110 | 6 Wie folgende Beispiel zeigen, sind die Dualzahlen im 2er-Komplement wie auf einem Ring angeordnet:
Verlässt man den Wertebereich auf der einen Seite tritt man auf der anderen Seite wieder ein (7 + 1 = -8 bzw. -8 - 1 = 7). In Java verursacht ein solcher Übertritt keinen Fehler. Man muss also selbst darauf achten, dass man den Wertebereich einer ganzzahligen Variable nicht verlässt.
|
© 2004-2024 M. Blanke · Ursulaschule · Kleine Domsfreiheit 11-18 · 49074 Osnabrück |