PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Binär Multiplizieren und Dividieren?



Tob
07.10.2006, 13:55
Hi Leute,

Ich habe vor bei mir in der Ausbildung einen "Taschenrechner" mit Logikgattern und Flippflops aufzubuaen.
Dazu müsste ich allerdings noch wissen wie man im Binärsystem Zahlen Dividieren und Multipilizieren kann!

Hab dazu auch schon unter Wikipedia gesucht aber nichts brauchbares gefunden.

Wäre echt nett von euch wenn ihr mir dabei Helfen könntet. 8-[

gunzelg
07.10.2006, 15:39
Hallo Tob

ein Addierer ist einfacher. Dazu gibts in den einschlägigen Schulbüchern entsprechende Infos.
Gleiches gilt für den Multiplizierer. Allerdings ist der doch aufwendiger.
Ich weiss nicht , welchen Beruf du lernst, nehme aber an, dass das wohl in die Richtung geht.
Schau also erst mal nach "Volladdirer" und "Halbaddierer.

Gerhard

Tob
08.10.2006, 13:33
Also mir gehts eigentlich weniger um das Addieren von Zahlen,
da ich mir dazu schon einen Schaltplan mit Volladdierern überlegt habe.

Ich wollte nur wissen wie man Binär Multipliziert und Dividiert! ](*,)

PS: Ich mach ne Ausbildung zum Elektroniker für Bertiebstechnik.

coCo
08.10.2006, 13:42
Schau mal hier:
http://de.wikipedia.org/wiki/Dualsystem#Schriftliche_Multiplikation

SprinterSB
08.10.2006, 14:06
IMHO ist Division sehr kompliziert in Hardware zu implementieren. Dividieren und Multiplizieren funktioniert genau so, wie man es in der Grundschule lernt (eben für 2er-System anstatt 10er-System).

Bei einer Divison musst du ja Schieben-Vergleichen, Subtrahieren wenn kleiner, etc. Das ist sehr aufwändig in HW. Da brauchst du schon mehr als ne einfache ALU kann: Schleifen und so, also ein richtiges Rechenwerk mit Registern und Taktung.

Am einfachsten in eine Dummie-Division, nicht so effizient wie die Grunschul-Division, dafür aber einfachen. Hier für positive Zahlen ausgetextet:


## QUOTIENT = DIVIDEND / DIVISOR
## REST = DIVIDEND modulo DIVISOR

IF DIVISOR = 0
ERROR
ELSE
QUOTIENT := 0
REST := DIVIDEND

WHILE (DIVISOR <= REST)
REST := REST - DIVISOR
QUOTIENT := QUOTIENT + 1
END WHILE
END IF


Die Subtraktion machst du im 2er-Komplement:


y-x := y + 1 + NOT x

Manf
08.10.2006, 14:56
Für Spezialarchitektur zum schnellen Multiplizieren kannst Du hier mal nachsehen.
Normalerweise wird man die Additionen zum Multiplizieren seriell ausführen, auch auf Gatterebene.
Manfred

http://images.google.de/images?svnum=10&hl=de&lr=&q=multiplier+wallace

http://www.iccd-conference.org/proceedings/1998/90990122.pdf#search=%22fast%20multiplier%20bit%20w allace%22

http://www.ece.cmu.edu/~lowpower/cicc96.pdf#search=%22fast%20multiplier%20bit%20wal lace%22

Tob
10.10.2006, 21:43
Danke für eure Antworten!

Eure Links haben mir sehr weitergeholfen. \:D/