FB18 - Das Forum für Informatik

fb18.de / Bachelorstudieng / PM Technische Informatik

Aufgabe 46

Aufgabe 46 2008-02-01 13:49
Anonymer User
Hi ich war im Lehmann Tutorium und er hat dort aufgaben besprochen von dem Typ der aufgabe 46
http://www.informatik.uni-hamburg.de/TKRN/world/abro/RS/aufgaben45_46.pdf

Ich steige da irgendwie nicht durch erstmal was das für eine Zahlendarstellung?
Ich habe nur so viel mitgekriegt das jede stelle für 4 Bit steht.

0*12345678 - 0*80000000 = 0*92345678

Was ist das nun und wo drann sehe ich nun Was gesetzt ist null ,Negativ,V(overflow),C(Carry)?

RE: Aufgabe 46 2008-02-01 16:02
Anonymer User
Aeh… schon mal von Hexadezimaldarstellung gehoert?

RE: Aufgabe 46 2008-02-01 17:05
Anonymer User
jub schon mal gehört ist mir auch klar aber ich komme irgendie nicht mit diesem überlauf übertrag klar
zb 0*f3ab347 -0*33def56 = 0*bfcc3f1
ich frage mich nur wie die jetzt auf das b kommen alle andern sind klar doch wenn ich mir jetzt nur mal f-3 angucke dann er halte ich ja 0011 und ein im übertrag wiso nehme ich jetzt den übertrag einfach an die erste stelle also 1011 bzw b

RE: Aufgabe 46 2008-02-01 17:35
Fred
jub schon mal gehört ist mir auch klar aber ich komme irgendie nicht mit diesem überlauf übertrag klar
zb 0*f3ab347 -0*33def56 = 0*bfcc3f1
Es heisst 0x und nicht 0*
0x ist das Präfix, welches Hexadezimalzahlen kennzeichnet.

Ich habe mal folgendes Diagramm gemalt, um die Sache mit dem Übertrag (Carry) und Überlauf (Overflow) darzustellen (klicken, um es zu vergrößern):

[img]http://www.picupload.net/t-df01ab723d24e325304365e1522115b6.png[/img]

Es ist so zu deuten: Wenn Du bei einer Rechnung über die grüne C-Barriere läufst, dann hast Du einen Übertrag. Und wenn Du über die rote V-Barriere läufst, dann hast Du einen Überlauf.

(Übertrag bezieht sich also auf vorzeichenlose Zahlen und Überlauf auf vorzeichenbehaftete.)

Das Diagramm zeigt einen endlichen Körper (ist wahrscheinlich nicht der richtige Fachterminus, bitte korrigiert mich) mit 16 verschiedenen Elementen. Ich hatte keine Lust, 4 Milliarden Zahlen zu zeichnen. Aber die 16 Elemente passen ja ganz gut zu den 16 möglichen Hexadezimalziffern der höchstwertigsten Stelle einer Zahl. Zwischen der 0 (inkl.) und der 1 (exkl.) sind also die Zahlen 0x00000000 bis 0x0FFFFFFF, zwischen 1 (inkl.) und 2 (exkl.) sind 0x10000000 bis 0x1FFFFFFF usw.

0*f3ab347 -0*33def56 = 0*bfcc3f1
ich frage mich nur wie die jetzt auf das b kommen
Naja, schriftliche Subtraktion. Wenn Du 4-5 rechnest, musst Du Dir ja z.B. "einen merken" für die nächste Stelle.
F3AB347 33DEF56 11111   (an den 1-ern hat man "einen im Sinn", aber nicht im Tee ;) ------- BFCC3F1 Und bei der höchstwertigen Stelle ist halt f - 3 - 1 = b.

Ich habe die Subtraktion mal als blauen Pfeil in das Diagramm eingetragen:

[img]http://www.picupload.net/t-1c7aa61239333fb847517d14d704f51a.png[/img]

Wie man sehen kann, gibt es keinen Überlauf, da die rote Barriere nicht überschritten wird.

OH, VERGISS DAS BEISPIEL. Ich sehe gerade, dass da ja nur sieben Ziffern angegeben sind. Das ist ja gemein. Es handelt sich also um viel kleinere Zahlen. Was ich Dir vorgerechnet habe, würde aber natürlich für F3AB3470 - 33DEF560 = BFCC3F10 gelten.

Jetzt aber nochmal das richtige Diagramm zu den Originalzahlen:

[img]http://www.picupload.net/t-cc1af65454460d90653c89df80c776a5.png[/img]

RE: Aufgabe 46 2008-02-01 18:03
Anonymer User
super erklärung danke schonmal
Also laut lehmann ist da nun nichts gesetzt weder n noch z,v,c
Aber wir haben doch einen 1 mehr also ein übertrag oder?
wenn wirr 1111 + 1100 =1011 und ein überlauf ?

RE: Aufgabe 46 2008-02-01 18:08
Fred
Also laut lehmann ist da nun nichts gesetzt weder n noch z,v,c
Das ist korrekt.
n ist nicht gesetzt, weil das Ergebnis positiv ist (im rechten Halbkreis).
z ist nicht gesetzt, weil das Ergebnis ungleich Null ist.
v ist nicht gesetzt, weil der blaue Pfeil die rote Barriere nicht kreuzt.
c ist nicht gesetzt, weil der blaue Pfeil die grüne Barriere nicht kreuzt.

Aber wir haben doch einen 1 mehr also ein übertrag oder?
Nö, dazu müssten wir links vom ganz linken "gemerkten Einser" noch einen haben. Haben wir aber nicht, da f - 3 - 1 ohne Übertrag b ergibt.

wenn wirr 1111 + 1100 =1011 und ein überlauf ?
Wo kommt die Addition her?

RE: Aufgabe 46 2008-02-01 18:17
Anonymer User
Die addition weil ich das zweier Komplement von 3 gebildet habe dann addiere ich doch quasi danach
Übertrag weil wenn ich 1111 + 1100 von links nach rechts bit weise addiere habe ich an der dritten stelle mein ersten übertrag dann schreibe cih denn übertrag an die vierte stelle ich erhalte also 1011 aber jetzt erhalte ich doch noch ein übertrag danach ja noch 1 + 1 habe

RE: Aufgabe 46 2008-02-01 18:53
Fred
Die addition weil ich das zweier Komplement von 3 gebildet habe dann addiere ich doch quasi danach
Ach so, statt f - 3 rechnest Du f + (-3)

Das kann man natürlich machen, dann dreht sich aber die Bedeutung des Carry-Flags um. Du musst also das Carry invertieren. Ist eigentlich recht einsichtig: 1 subtrahieren sollte ja in 15 von 16 Fällen ohne Übertrag klappen, während f addieren in 15 von 16 Fällen zu einem Übertrag führt.

Hm, also mein Vorschlag ist, einfach ganz normal zu subtrahieren.

RE: Aufgabe 46 2008-02-01 19:55
Fred
Nochmal ein kleiner Nachtrag zum Overflow. Woher weiß man eigentlich, dass man die Overflow-Barriere überschreitet? Es gibt dafür jeweils zwei verschiedene Möglichkeiten bei der Addition und Subtraktion:

positiv + positiv = negativ bzw. positiv - negativ = negativ, d.h. man ist im rechten Halbkreis und wandert zu weit mit dem Uhrzeigersinn

negativ + negativ = positiv bzw. negativ - positiv = positiv, d.h. man ist im linken Halbkreis und wandert zu weit gegen den Uhrzeigersinn

Die fett gedruckten kann man sich besonders gut merken (und das Subtraktions-Äquivalent leicht im Kopf ableiten - einfach den zweiten Operanden negieren), denn es sollte einen verwundern, wenn zwei positive Zahlen eine negative Summe bilden. Ebenso macht es einen stutzig, wenn die Summe zweier negativer Zahlen positiv ist.

Wir stellen also fest: genau dann wenn bei der Addition (Subtraktion) die Vorzeichen der Operanden gleich (verschieden) sind und das Vorzeichen des Ergebnisses anders ist als das Vorzeichen des ersten Operanden, dann ist das Overflow-Bit zu setzen. Bezeichnen wir die Vorzeichenbits der Operanden und des Ergebnisses mit a, b und s, dann können wir uns verkürzt folgende Formeln merken:
v = (a == b) & (s != a)   (Addition) v = (a != b) & (s != a)   (Subtraktion)

RE: Aufgabe 46 2008-02-02 13:58
Anonymer User
In deinem Merk Formeln was ist s ?
Die erklärung des overflows ist sehr gut danke .
Kannst du mir dann auch nochmal das mit dem carry erklären :)ich habe noch nicht ganz verstenden wie es sein kann das ich ein overflow habe aber kein Carry?

RE: Aufgabe 46 2008-02-02 15:56
Fred
In deinem Merk Formeln was ist s ?
Das Vorzeichen des Ergebnisses:
Bezeichnen wir die Vorzeichenbits der Operanden und des Ergebnisses mit a, b und s

ich habe noch nicht ganz verstenden wie es sein kann das ich ein overflow habe aber kein Carry?
Klar, kein Problem. 0x7FFFFFFF + 0x00000001 = 0x80000000 (positiv + positiv = negativ => Überlauf). Da 7+1 = 8 keinen Übertrag produziert, ist das Carry nicht gesetzt.