Damit haben wir unser erstes, einfachstes Rechenwerk fertig (genau genommen eine sogenannte arithmetisch-logische Einheit oder ALU)! Um daraus ein produktionsreifes Rechenwerk zu machen, müsste man noch weitere Rechenarten und Operationen hinzufügen – ich verzichte an dieser Stelle allerdings darauf, da es im Prinzip genau so wie bei der Addition und Subtraktion funktioniert und nur etwas komplexer in der Darstellung und Erklärung ist. Wer Interesse an der Thematik hat, findet dazu im Internet einiges an Literatur; hier geht es in erster Linie darum, die Magie eines Prozessors etwas zu beleuchten und das lässt sich auch mit Addition und Subtraktion bewerkstelligen (wirklich – viel komplizierter wird es nicht mehr). Ein komplettes Rechenwerk besitzt ein paar Eingänge für die Daten (Summanden, Faktoren usw.) sowie Eingänge für das Steuersignal, das aus einer Bitkette besteht und angibt, welche Operation auf den Eingabedaten durchgeführt werden soll.

Eigentlich ganz einfach, oder? Jetzt stellt sich jedoch noch eine Frage: woher kommt das Steuersignal? Aber das werden wir beim nächsten mal sehen (was diesmal hoffentlich nicht so lange dauert).

1 / 2

Kommentare (4)

  1. #1 Engywuck
    August 15, 2011

    Zweierkomplement habe ich damals erst kapiert, als mir klar wurde, was bei “0000” – “0001” passiert.

    Beim klassischen “Zehnersystem” wird ja (schreibts mal auf! :D) bei z.B. “100 – 24” von rechts nach links subtrahiert. Also “0 minus 4” – hmmm, geht nicht, aber wenn ich “10 minus 4” rechne gehts, muss nur nachher vom nächsthöheren eins zusätzlich abziehen, also rechte Ziffer ist ne “6”. Zweite Ziffer: “0 minus 2”, aber da war ja vorher noch die 1, also “0 minus 3”, Mist, selbes Problem, also “10 minus 3” und beim nächsten eins zusätzlich abziehen, bisher also “76”. Bei der dritten Stelle “1 minus 0 minus 1 von vorhin”, bleibt 0.

    Was passiert nun bei binär “0000 – 0001”? Klar, rechte Stelle: “0 – 1” geht nicht, aber “10 – 1 = 1” geht, also rechte Stelle eine “1”. Zweite Stelle: “0 – 0 – 1” (letzte -1 von vorhin), selbes Problem, also nun Ergebnis “11”. Mit der dritten Stelle dasselbe, ebenso bei der vierten, also nun “1111” – und ein zusätzliches Abziehen von der fünften Stelle. oh, die haben wir gar nicht? toll, also lassen wir das untern Tisch fallen.

    Dass ein Rechner natürlich einfacher “-2 ist 0010 invertiert + 0001, also 1110” rechnet ist klar 😀

    Übrigens hast du “unterschlagen”, warum man nicht einfach das am weitesten links stehende Bit zum Vorzeichen ernannt hat (in heutigen Rechnern): damit hätte man positive wie negative Null (1000 = -0, 0000 = +0)… auch nicht unbedingt besser, zudem würde das Rechenwerk komplexer (naive Addition geht dann nicht: 1001 (-1) + 0001 (+1) = 1010 (-2). oops.). Das mit dem Zweierkomplement verwandte Einerkomplement (nur invertieren) hätte dasselbe Problem mit der negativen Null (und das Rechenwerk wird minimal komplexer als beim Zweierkomplement). Zudem gewinnt man durch das Zweierkomplement einen Wert im Wertebereich – 4-Bit-Zweierkomplement geht von “1000” (-8) bis “0100” (+7), “höchstes Bit als Vorzeichen” (wie Einerkomplement) dagegen von “1111” (-7) bis 0111 (+7). Bei 64 Bit macht das zwar nicht mehr soooo viel aus, aber bei den früher verwendeten niedrigen Bitzahlen….

    Interessanterweise verwenden Gleitkommazahlen üblicherweise dann doch wieder ein Vorzeichenbit. Scheint da dann einfacher zu implementieren zu sein als die entsprechende Komplementdarstellung.

  2. #2 Marcus Frenkel
    August 15, 2011

    @Engywuck
    Schöne Erklärung mit dem Dezimalsystem. Die kannte ich noch gar nicht. 😉

    Warum die Gleitkommazahlen das ordinäre Vorzeichenbit und nicht das Zweierkomplement benutzen, liegt meiner Meinung nach genau an dem Vorteil des Zweierkomplements, dass sich die Subtraktion ohne zusätzliche Logik auf die Addition abbilden lässt – und die Addition lässt sich ziemlich schnell durchführen (die nicht doppelte 0 halte ich gar nicht einmal für den größten Vorteil – aber das ist nur eine Vermutung). Da Berechnungen mit Gleitkommazahlen ja nicht ganz so einfach funktionieren, bringt hier vermutlich das Zweierkomplement gar nichts – immerhin möchte man ja nicht, dass ein Bit durch die Addition von 1 am Ende von der Mantisse in den Exponenten rutscht. Das wäre kontraproduktiv. 😉

  3. #3 CHP
    August 15, 2011

    Passend zu diese Artikelserie möchte ich auf die Software Logisim: https://ozark.hendrix.edu/~burch/logisim/ (GPL) aufmerksam machen.

    Damit kann man einfache und komplexe logische Schaltungen simulieren, ohne sich mit den elektrotechnischen Grundlagen herumschlagen zu müssen. Das ist genau das richtige Werkzeug bzw. Spielzeug um diese Artikel nachzuvollziehen.

  4. #4 Engywuck
    August 18, 2011

    Dezimalsystem. Die kannte ich noch gar nicht.

    Typisch Informatiker. kennen nur dual 😉

    @CHP: leider etwas high-level, z.B. kennt es nur p-type Transistoren und darüber dann schon komplexe Gatter… Trotzdem ganz nett.