Beste Antwort
Zu Beginn müssen wir diese Punkte hervorheben:
-  
ALUist es egal, ob Sie vorzeichenbehaftete oder vorzeichenlose Mathematik ausführen. -  
ALUführt nur die Binärdatei aus Mathe und setzt die Flags entsprechend. -   In  
signed numbersDas Vorzeichenbit ist ein Bit, das das Vorzeichen der Zahl angibt. Es befindet sich im höchstwertigen Bit. 
– In vorzeichenlose Arithmetik, wir müssen das Übertragsflag beobachten, um Fehler zu erkennen.
– In signiert Arithmetik, wir müssen das Überlaufflag beobachten, um Fehler zu erkennen.
– Das Übertragsflag wird gesetzt, wenn:
- Das Hinzufügen von zwei Zahlen bewirkt, dass die höchstwertigen (am weitesten links liegenden) Bits adde ausgeführt werden d.
 -  
1111 + 0001 = 0000> => Übertragsflag ist aktiviert. - Die Subtraktion von zwei Zahlen erfordert eine Ausleihe in die höchstwertige (ganz links) ) Bits subtrahiert.
 -  
0000 - 0001 = 1111> => Übertragsflag ist aktiviert. 
– die Überlauf-Flag wird gesetzt, wenn:
-  die Summe zweier Zahlen mit dem Vorzeichenbit 
offein Ergebnis ergibt Nummer mit dem Vorzeichenbiton. -  
0100 + 0100 = 1000> => Überlaufflag ist aktiviert. -  Die Summe zweier Zahlen mit dem Vorzeichenbit 
onergibt eine Ergebniszahl mit dem Vorzeichenbitoff. -  
1000 + 1000 = 0000> => Überlaufflag ist aktiviert. - Beachten Sie, dass : Mixed-Sign Addition aktiviert niemals das Überlauf-Flag.
 
– Um dies klarer zu machen, sehen wir uns diese beiden Beispiele an:
1- Nehmen Sie die folgende binäre Addition `0111 + an 0010 = 1001 `
– wenn wir vorzeichenlose Mathematik betreiben
 0111 + 0010 = 1001 // overflow flag is turned on. 
  7 + 2 = 9 // its ok, we only care about the carry flag 
– wenn wir signierte Mathematik machen
 0111 + 0010 = 1001 // overflow flag is turned on. 
  7 + 2 = -7 // error detected 
2- Nehmen Sie die folgende binäre Addition `1111 + 0001 = 0000`
an – wenn wir vorzeichenlose Mathematik ausführen
 1111 + 0001 = 0000 // carry flag is turned on. 
  15 + 1 = 0 // error detected 
– wenn wir signierte Mathematik ausführen
 1111 + 0001 = 0000 // carry flag is turned on. 
  -1 + 1 = 0 // its ok we only care about the overflow flag 
 // remember: Mixed-sign addition never turns on the overflow flag. 
Schließlich finden Sie hier weitere Informationen: http://teaching.idallen.com/dat2343/10f/notes/040\_overflow.txt
Antwort
Aus mechanistischer Sicht wird das Übertragsflag gesetzt, wenn das höchstwertige Bit übertragen wird. Das Überlauf-Flag wird gesetzt, wenn ein Übertrag in das höchstwertige Bit vorliegt.
Bei vorzeichenloser Arithmetik müssen Sie sich nur um den Übertrag kümmern Flagge. Wenn etwas aus dem höchstwertigen Bit ausgeführt wird, ist das Ergebnis zu groß, um in einem einzelnen Register enthalten zu sein.
Bei vorzeichenbehafteter Arithmetik ist die Situation komplexer. Ein Überlauf tritt auf, wenn das Übertragsflag und das Überlaufflag unterschiedlich sind. Hier finden Sie alle Alternativen zum Hinzufügen von zwei Bits.
 00 + 00 = 00, (0 + 0 = 0 decimal), CF = 0, OF = 0 
 01 + 01 = 10, (1 + 1 = -2 decimal) CF = 0, OF = 1 overflow 
 01 + 10 = 11, ( 1 + -2 = -1 decimal), CF = 0, OF = 0 
 01 + 11 = 00, ( 1 + -1 = 0 decimal), CF = 1, OF = 1 
 10 + 10 = 00, ( -2 + -2 = 0 decimal), CF = 1, OF = 0 overflow 
 10 + 11 = 01, ( -2 + -1 = 1 decimal), CF = 1, OF = 0 overflow 
 11 + 11 = 10, (-1 + -1 = -2 decimal), CF = 1, OF = 1 
Beachten Sie, dass die Zeilen 2, 5 und 6 aufgrund von Überlauf zu falschen Ergebnissen führen und dass dies auch der Fall ist, wenn sich CF von OF unterscheidet.
Einige Prozessoren führen diesen Vergleich möglicherweise für Sie durch, und das OF, das Sie sehen, ist möglicherweise das Ergebnis des Vergleichs eines internen Übertragsflags mit dem Übertragsflag. Es ist weiterhin nur für vorzeichenbehaftete Arithmetik gültig.
Es funktioniert auch mit anderer Arithmetik, einschließlich Multiplikation.