Wer kann mir Von-Neumann-Addierwerk möglichst einfach erklären?

Hallo,
Bin Azubi und mache gerade meine Ausbildung zum Fachinformatiker. Ich muss wissen, wie Von-Neumann-Addierwerk funktioniert z.b. Zwei Zahlen addieren 10 und 15.

Auf Wikipedia und viele Uni Webseiten habe ich Infos gefunden aber zu kompliziert.

Wer kann hier bitte ganz einfach für extra dummes erklären, wie das funktioniert?

Wie läuft es ab wenn ich z.B. 1010 und 1111 addieren möchte?

Neuen Kommentar schreiben

CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.

Hey, ich habe mir das während meines Studiums ebenfalls selber beibringen müssen, daher werde ich versuchen das so einfach wie möglich zu gestalten.

Vorab der Algorithmus aus Wikipedia:

1. Register A und P mit Summanden laden
2. Addieren
3. Register A mit Summen ohne Übertrag laden, in P Überträge laden
4. 2 und 3 so lange wiederholen, bis Register S den Wert Null enthält

Beim Neumann-Addierwerk nimmst du zwei ganze Zahlen, stellst die Binär dar und addierst diese zusammen. Wir nehmen jetzt zwei kleine Zahlen.

zahl a = 12
zahl b = 21

Jetzt werden beide Zahlen in die Register geladen, also zahl a in Register A
und zahl b in Register P

Register A = 12
Register P = 21

Binär sieht es folgendermaßen aus:

A = 01100
P = 10101

Jetzt werden beide zahlen zusammen addiert. Merke beim Binären-Addieren ohne Übertrag, ist:
1 + 0 = 1
0 + 1 = 1
1 + 1 = 0
0 + 0 = 0

In A wird nun das Ergebnis gespeichert, ohne Übertrag und in P werden nur die Überträge notiert:

A = 11001
P = 01000

Wir haben jetzt alle 1 bei A gelassen, außer einmal, da P und A an derselben Stelle eine 1 hatten und somit ein Übertrag entstanden ist. Wenn man sich den Algorithmus oben anschaut, sehen wir, dass der Vorgang solange wiederholt werden muss, bis P nur noch aus Nullen besteht, also wird jetzt der 3. Schritt wiederholt:

A = 10001
P = 10000

Und da P immernoch eine eins hat, gleich nochmal:

A = 000001
P = 100000

und wenn wir es nun zusammenaddieren kriegen wir:

A = 100001 was in dezimal 33 ist (21 + 12)

Falls du dich wunderst warum dass Endergebnis um eine Stelle länger ist als zu Beginn (jetzt haben wir 6 Zahlen, zu Beginn waren es nur 5). Die Antwort ist, bei jedem Übertrag, wird die eins um einen Platz weiter nach vorne verschoben. Beim letzten Übertrag, stand die 1 bereits an erster Stelle, daher wurde der Übertrag auf die nächste Stelle weitergegeben. Also aus:
A = 010001
P = 010000
wurde
A = 100001

Ich hoffe, dass ich es dir damit etwas erklären konnte, wenn nicht einfach bescheid geben. Und ich überarbeite den Text.

Viele Grüße

Cenk

Profile picture for user Guest
Permanenter Link

Danke für deine einfache und gute Erklärung. Eine Frage habe ich noch. Wie wird Übertrag berechnet. Ich glaube mein Problem ist eher nicht addieren, sondern übertrag bzw. warum Übertrag nicht an der Stelle plaziert ist, wo auch beide Einsen waren sondern weiter vorne?

A = 11001
P = 01000 ergibt:
_______________
10001

Warum ist P nicht 01000?

Hey, freut mich, dass es dir helfen konnte.

Gerne erkläre ich dir das Prinzip mit dem Übertrag. Da ich nicht wissen kann, wie gut deine Kenntnisse bzgl. Binärrechnung sind, hier ein kleines Beispiel von Binärzahlen und Dezimalzahlen:
001 = 1
010 = 2
011 = 3
100 = 4
101 = 5
110 = 6
111 = 7

Wenn du nun zwei Zahlen miteinander addierst, ist das Ergebnis der Rechnung größer als die beiden Zahlen im einzelnen, z.B. 2 + 3 = 5.
Da ist das Ergebnis 5 größer als 3 und größer als die 2. Wenn du nun bei der Binärrechnung zwei Zahlen zusammen addierst, so musst du auch eine größere Zahl als Ergebnis rausbekommen, und je weiter links du gehst, desto größer wird die Zahl, also 100 ist größer als 001.
Wenn du 2 + 2 zusammen addierst, sieht das in Binär folgendermaßen aus:
010
010
---

Wenn ich nun die beiden zusammen addiere und keinen Übertrag durchführe, dann kriege ich als Ergebnis wieder 010, was umgerechnet wieder 2 ist. Aber dadurch dass ich die Eins um eine Stelle weiterverschiebe, bekomme ich die nächst höhere Potenz, also die 4. Wenn du die 1 nicht weiter verschiebst, bekommst du keine größere Zahl.

Das textuell darzustellen ist nicht ganz einfach, aber ich hoffe, dass ich dir erklären konnte, wieso du beim Übertrag die Zahl um eine Stelle weiter verschieben musst.

Profile picture for user Guest
Permanenter Link

Danke für die ausführliche Beschreibung. Rechnen mit binären Zahlen ist nicht so kompliziert, wenn man so einfach erklärt bekommt und sich etwas damit beschäftigt. Jetzt verstehe ich es.
Diese Seite bin ich zum ersten Mal begegnet aber werde öfter mal vorbeischauen.

Suche

Neueste Kommentare

  • 1 week 1 day ago
    Deprecated function: Creation of dynamic property Drupal Tablefield TablefieldFormatter::$ModuleHandler is deprecated
  • 1 month 1 week ago
    Transaction isolation level REPEATABLE-READ The recommended level for Drupal is "READ COMMITTED". (Drupal Status Report)

     Edit "/etc/my.cnf" ( under [mysqld] ):

    transaction_isolation="READ-COMMITTED"

    Restart MariaDB / MySQL:

  • 1 month 2 weeks ago
    Wget - Eine Webseite rekursive downloaden

    wget -U 'Mozilla/MyUserAgent' -P MyTempDir123 --wait=0.2 --random-wait -nd -r -x -l 4 -e robots=off --reject

  • 1 month 2 weeks ago
    Wget - Eine Webseite rekursive downloaden

    wget -U 'Mozilla/MyUserAgent2024' -P MyOutPutDirectory --wait=1 --random-wait -nd -r -l 2 -e robots=off --reject

  • 2 months 2 weeks ago
    CPU benchmarking with sysbench (single-threaded/all cores)

     

    # sysbench --threads="$(nproc)" cpu run

  • 2 months 2 weeks ago
    CPU benchmarking with sysbench (single-threaded/all cores)

    # sysbench --threads="$(nproc)" cpu run

  • 2 months 2 weeks ago
    Linux Autovervollständigung - bash autocomplete
    source ~/.bashrc

    Diese Lösung wird empfohlen aber hat bei mir nicht funktioniert.

    Welche Alternative gibt es?

  • 2 months 2 weeks ago
    PHP-CLI auf PHP8.2 umstellen (für Composer, Drush etc)

    ln -snf /opt/plesk/php/8.3/bin/php /etc/alternatives/php

  • 2 months 3 weeks ago
    Drush Update failed (require php >=8.2)

    In composer.json, update: 

     

  • 2 months 3 weeks ago
    Drupal: Anmeldung fehlgeschlagen Es hat mehr als 5 fehlerhafte Anmeldeversuche für dieses Benutzerkonto gegeben. Es ist vorübergehend gesperrt.
    drush sqlq "DELETE FROM flood"