Overflow und carry (Übertrag)?
"Regel: Operation korrekt, wenn beide Übertrage (in der Rechnung) gleich"
=> Sind damit die beiden Zahlen bzw. Übertrage oben in rot gemeint
1 Bsp. 00 5+2 hier Ergebnis richtig
2Bsp. 01 5+6 hier Ergebnis falsch
3 Bsp. 00 5-6 hier Ergebnis richtig
4 Bsp. 11 -2-3 hier Ergebnis richtig
5 Bsp. 10 -4-5 hier Ergebnis falsch
1 Antwort
Genau. Die linke rote Ziffer ist immer das Carry, was am Ende im Flag-Register steht (also was am Ende der Rechnung übrig bleibt) und die rechte rote Ziffer ist der Übertrag von der dritten auf die vierte Ziffer (quasi vom "most significant bit" der eigentlichen Zahl auf das Vorzeichen-Bit). Wenn die beide gleich sind, ist das Ergebnis korrekt. Wenn sie unterschiedlich sind, gab es einen Überlauf von positiv auf negativ (oder andersrum) und das Ergebnis ist falsch.
Das gilt aber nur, wenn beide Zahlen vorzeichenbehaftet sind. Wenn du zwei vorzeichenlose Zahlen addierst, ist das Carry-Flag der Hinweis, ob es einen Überlauf gab. Und wenn du eine Mischung aus vorzeichenlosen und vorzeichenbehafteten Zahlen hast, gibt es Chaos.
Genau. Der Übertrag, der quasi auf der linken Seite aus der Rechnung rausfällt, ist der, der dann im Flag-Register vom Prozessor gespeichert wird.
Da von der dritten auf die vierte Stelle (1010 + 1100) kein Übertrag stattfindet, sind die beiden Überträge unterschiedlich. Dadurch wird das Overflow-Bit gesetzt und du weißt, dass du dem Ergebnis nicht trauen kannst (-6 - 4 = 6?)
Danke, was mir noch nicht auf der Seite klar ist:
Das Carry-Bit (Übertrag) entsteht immer, wenn ich die beiden MSB der beiden Zahlen addiere. Hier die 1 in fett
1010
+ 1100
= (1)0110 Das Carry-Bit ist das (1), da 1 +1 = 10