Halb- und Volladdierer



  • Hallo zusammen,

    ich habe mir soeben die Funktionsweise des Halb- und des Volladdieres angeschaut und im Groben auch verstanden. Mit dem Halbaddierer (1-Bit-Addierer) können zwei einstellige Binärzahlen und mit dem Volladdierer drei einstellige Binärzahlen addiert werden. Nun meine Fragen:

    1.) Was soll der Unterschied zwischen Halb- und Volladdierer? Ich vermute, dass in der ALU der CPU Volladdierer hintereinander geschaltet sind. Damit können auch mehrstellige Binärzahlen addiert werden. Was bringt dann der Halbaddierer, wenn der Volladdierer mehr kann?

    2.) Warum redet man bei drei Binärzahlen von einem Volladdierer? Könnte man nicht eine Schaltung entwerfen, die auch vier einstellige Binärzahlen addieren kann? Die wäre zwar komplizierter, aber der Volladdierer ist auch viel komplexer als der Halbaddierer.

    3.) Gibt es konkrete Beispiele, wann man auf Halbaddierer angewiesen ist und wann Volladdierer nicht infrage kommen? Ich könnte ja auch mit einem Volladdierer zwei Zahlen addieren. Den dritten Eingang würde ich einfach auf 0 setzen.

    Vielen Dank für eure Hilfe
    lg, freakC++

    PS.: Ich bin mir nicht sicher, ob Themen aus der Technischen Informatik ins Mathe/Physik Forum gehören. Einen geeigneteren Ort sehe ich jedoch nicht. Warum benennt man dieses Unterforum nicht in Mathe / Physik / Informatik um? Die Informatik ist teilweise nicht gut vertreten in diesem Forum.



  • Warum redet man bei drei Binärzahlen von einem Volladdierer? Könnte man nicht eine Schaltung entwerfen, die auch vier einstellige Binärzahlen addieren kann? Die wäre zwar komplizierter, aber der Volladdierer ist auch viel komplexer als der Halbaddierer.

    komplexer => größer => ineffizienter. Die Frage ist eher andersrum: was bringt es mit 4 Binärzahlen addieren zu können? Der Volladdierer hat ja 3 Eingänge um ein Carrybit miteinbeziehen zu können.

    3.) Gibt es konkrete Beispiele, wann man auf Halbaddierer angewiesen ist und wann Volladdierer nicht infrage kommen? Ich könnte ja auch mit einem Volladdierer zwei Zahlen addieren. Den dritten Eingang würde ich einfach auf 0 setzen.

    Ich würde sagen wenn man wirklich nur zwei 1-bit-Zahlen addieren will wäre es Blödsinn einen zusätzlichen EIngang dranzulegend er dann sowieso nur 0 ist



  • Danke dir!
    Ist es sinnvoll zu sagen, dass der Vorteil des Volladdierers das Carrybit (Übertrag) ist? Kann man eigentlich mehrstellige Zahlen ausschließlich mit Halbaddierern addieren?



  • freakC++ schrieb:

    2.) Warum redet man bei drei Binärzahlen von einem Volladdierer? Könnte man nicht eine Schaltung entwerfen, die auch vier einstellige Binärzahlen addieren kann? Die wäre zwar komplizierter, aber der Volladdierer ist auch viel komplexer als der Halbaddierer.

    Es geht hier um die Anwendung zum Summieren von größeren Binärzahlen: Der Halb-Addierer nimmt zwei Bits und spuckt deren Summe aus, der Voll-Addierer bekommt als zusätzlichen Eingang den Übertrag von der niedrigeren Stelle. Wenn du z.B. zwei Bytes (à 8 Bit) addieren willst, kannst du einen Halb-Addierer und 7 Voll-Addierer zusammenpacken, wobei der Carry-Ausgang jedes Addierers jeweils als drittes Eingangssignal für den nächsten verwendet wird.
    (und außerdem kann man einen Volladdierer aus zwei Halbaddierern zusammensetzen ;))



  • brauche ich den einen Halbaddierer für das letzte Bit? Oder wofür ist der da? Es kann ja auch sein, dass beim letzten Bit ein Übertrag anfällt.



  • brauchen nicht - und wenn du einen Halb-Addierer verwendest, dann eher für das erste Bit (dort hast du keinen Übertrag von einer niedrigeren Stelle, den du berücksichtigen mußt).

    Vielleicht hilft es dir ja, wenn ich das mal aufzeichen:

    +---+
    a0 --|HA |-- n0
    b0 --|   |+  c0
         +---+|
              |
        +-----+
        |
        |+---+
        +|VA |-- n1
    a1 --|   |
    b1 --|   |+  c1
         +---+|
              |
    ...
    


  • freakC++ schrieb:

    brauche ich den einen Halbaddierer für das letzte Bit? Oder wofür ist der da? Es kann ja auch sein, dass beim letzten Bit ein Übertrag anfällt.

    Der Halbaddierer ist praktisch nur ein Zwischenschritt beim Lernen, was ein Volladdierer ist. Und der Übertrag von der höchsten Stelle kommt typischerweise unten wieder rein. Das ist also eine zyklische Geschichte.

    In einem echten Computer wirst Du 2 64-bit Zahlen übrigens nicht durch 64 hintereinandergeschaltete Volladdierer addieren. Dort treibt man mehr Aufwand, um die "Tiefe" der Schaltung zu verringern.

    @CStoll: Bezieht sich Deine Signatur eigentlich auf Deine Moderatorentätigkeit? 😋



  • Gregor schrieb:

    @CStoll: Bezieht sich Deine Signatur eigentlich auf Deine Moderatorentätigkeit? 😋

    nur die zweite Zeile - wieso fragst du?



  • CStoll schrieb:

    Gregor schrieb:

    @CStoll: Bezieht sich Deine Signatur eigentlich auf Deine Moderatorentätigkeit? 😋

    nur die zweite Zeile - wieso fragst du?

    Nur, weil ich die Signatur gerade gesehen habe. Ich fand es ganz lustig, die erste Aussage auf die Moderatorentätigkeit zu beziehen. 🙂 ...ich muss mal gucken, wie es da im MFC-Forum aussieht. 😃



  • um einen Volladdierer mit zwei Halbaddierern zu bauen, muss in die Schaltung aber noch ein ODER. Warum?



  • freakC++ schrieb:

    um einen Volladdierer mit zwei Halbaddierern zu bauen, muss in die Schaltung aber noch ein ODER. Warum?

    Um die beiden Carry-Ausgänge miteinander zu verknüpfen. Du hast ja einen Übertrag im Gesamtergebnis, wenn einer der beteiligten Halb-Adder einen Übertrag liefert.
    (nachdem du so viel Übung darin gesammelt hast, kannst du ja mal die Formel auseinandernehmen :D)

    @Gregor: Den Spruch hatte ich mir schon für meinen ersten "Auftritt" zugelegt und dann konsequent überall mitgenommen (das war lange, bevor ich überhaupt von diesem Forum gehört habe). Aber er besagt ja nicht, daß ich dafür verantwortlich bin 😃



  • CStoll schrieb:

    (nachdem du so viel Übung darin gesammelt hast, kannst du ja mal die Formel auseinandernehmen :D)

    ´

    Das habe ich bereits gemacht :D. Und welch Wudner: Ich kam auf das richtige Ergebnis. D


Anmelden zum Antworten