Overflow und carry (Übertrag)?

1 Antwort

Von Experte ralphdieter bestätigt

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.

RedDevil1982 
Fragesteller
 23.03.2023, 10:24

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

0
daCypher  23.03.2023, 14:56
@RedDevil1982

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?)

0