[Progra] Blatt 1 Tutoraufgabe 4

[Progra] Programmierung
[DSAL] Datenstrukturen und Algorithmen
[SWT] Softwaretechnik
[DB] Datenbanken und Informationssysteme

Blatt 1 Tutoraufgabe 4

Beitragvon AGo » 23.10.11 11:37

Moin zusammen,

ich wurd gebeten nochmal kurz zu erklären wie das in Aufgabe 4a genau funktioniert.

Das Verhalten von Java ist eigentlich relativ offensichtlich wenn man sich überlegt was da intern passiert:

Die Zahlen werden als 2er-Komplement dargestellt und dann addiert (also einmal +1 und einmal + (-1))

Code: Alles auswählen
"zahl" im 2K sieht also so aus

10000000000000000000000000000000
und die +1 so
00000000000000000000000000000001
das wird addiert und raus kommt
10000000000000000000000000000001
als 2K-Darstellung des Ergebnisses, invertieren und addieren von 1 liefert dann die "normale" Binärdarstellung
01111111111111111111111111111111.
das Ergebnis ist also diese Zahl als dezimal interpretiert plus die Vorzeicheninformation aus dem 2K, also - 2147483647


Soweit ja noch nix spannendes. Jetzt addieren wir aber nicht +1 sondern -1:

Code: Alles auswählen
"zahl" im 2K sieht wieder so aus

10000000000000000000000000000000
und die -1 so
11111111111111111111111111111111
das wird addiert und raus kommt (Der Übertrag der an der linkesten Stelle entseht wird einfach ignoriert)
01111111111111111111111111111111
als 2K-Darstellung des Ergebnisses.


Hier sehen wir das durch den ignorierten Übertrag sozusagen Informationen verloren geht (hätten wir mehr Bits zur Verfügung wär das nicht
passiert). Damit ist aber das msb (most significant bit - Bit mit der höchsten Wertigkeit, also das ganz links) nun 0. Also müssen wir zum
berechnen der Dezimaldarstellung nichts mehr machen sondern die Zahl einfach "wie sie ist" interpretieren und raus kommt nunmal
2^0+2^1+2^2+...2^30 = 2147483647.


In Aufgabe 5b sind die Zahlen dementsprechend dann natürlich auch als int zu betrachten. Wenn man die als long o.ä. sehen wollen würde müsste man das explizit casten.
Benutzeravatar
AGo
0x41476F
 
Beiträge: 2181
Registriert: 09.09.05 18:21
Wohnort: Awf
Studiengang: Informatik (Dipl.)
Anwendungsfach: BWL

Zurück zu Praktische Informatik