Der Apollo Guidance Computer (AGC) verwendete die Komplementarithmetik. Der folgende Clip aus Frank O'Briens Buch über den Apollo Guidance Computer (2010) bietet eine teilweise Rechtfertigung für diese technische Entscheidung:
Der Schlüssel zur Einfachheit solcher Addierer ist die Anforderung, dass Zahlen das Einerkomplement für ihre Darstellung verwenden.
Frage: Warum ist die eigene Komplementdarstellung der Schlüssel zur Einfachheit eines seriellen Addierers?
Hier ist der Clip im Kontext von The Apollo Guidance Computer: Architecture and Operation ( http://amzn.to/2EfVFla ):
Brians Kommentar ist meiner Meinung nach der offensichtliche - die zusätzliche Idee, dass "+1" für die Zweierkomplementnotation erforderlich ist. (Ich habe seinen Kommentar erhöht.) Die Implikation ist hier, dass es wesentlich mehr Logik geben müsste, um diese zusätzliche Funktion auszuführen, die das eigene Komplement nicht benötigt.
Aber ich glaube nicht, dass es das war.
Ein serieller Addierer führt genau die gleichen Funktionen aus, egal ob Einerkomplement oder Zweierkomplement. Der einzige Unterschied besteht darin, dass der Übertrag für das Zweierkomplement bei negativen Zahlen mit „1“ anstelle von „0“ beginnt, während der Übertrag für das Einerkomplement immer „0“ ist, unabhängig davon. Dies ist jedoch kein Problem. Für einen seriellen Zweierkomplement-Addierer muss lediglich ein "Preset" zum Carry-State-FF hinzugefügt werden (zusätzlich zum "Reset".) Und das ist eigentlich gar nicht so schwierig. Es fügt etwas hinzu. Aber ich glaube einfach nicht, dass es genug hinzufügt, um ein starkes Argument dafür zu liefern, dass dies der Grund war.
(Wenn Sie den typischen moderneren "serial adder"-Ansatz sehen möchten, werfen Sie einen Blick auf Use of D flip-flop in Serial Adder . Dort können Sie sehen, von welchem FF ich oben spreche.)
Negative Zahlen verwenden in beiden Schreibweisen eine "1" als Vorzeichenbit. Dies wird verwendet, um die Bits (falls zutreffend) zu invertieren, wenn sie durch den Addierer geschoben werden. Auch dies wäre in beiden Fällen identisch. Null zusätzliche Logik in diesem Punkt.
Die Realität sieht also, glaube ich, etwas anders aus. Es geht um die Möglichkeit, den FF komplett zu entfernen. Sie verwendeten einfach ein ODER-Gatter, gefolgt von einer Verzögerungsleitungsschaltung zwischen zwei Halbaddierern, um die Notwendigkeit eines FF vollständig zu ersetzen. Dieses ODER-Gatter plus Verzögerungsleitung hat deutlich weniger Teile als ein FF und unterstützt "Preset" nicht einfach.
Hier ist ein schnelles Diagramm:
Ich kann keine Dokumentation darüber finden, dass dies der eigentliche Grund ist. Wenn ich könnte, würde ich es hier posten. Aber ich erinnere mich an die Verwendung von Verzögerungsleitungen "früher" für diese und beim Nachdenken vermute ich den Unterschied zwischen einem einfachen Gate + einer Verzögerungsleitung und der alternativen Verwendung eines vollständigen FF (wie es moderne Bücher zu diesem Thema zu haben scheinen). it done) war meiner Meinung nach eher der Grund.
+1 übrigens für deine Frage. Du hast mich einen Moment zum Nachdenken gebracht und das weiß ich zu schätzen.
user_1818839