multiplizieren/dividieren im 2er Komplement
-
Wie funktioniert das eigentlich? Ich weiß nur, wie das Addieren und Subtrahieren funktioniert.
Theoretisch könnte man mit dieser Funktionalität mul und div durchführen, aber ich glaube jetzt einfach mal nicht, dass das so gemacht wird.Weiß da einer Bescheid?
-
Du solltest doch als Programmierer mit schon soviel Beiträgen auf die Lösung von allein kommen!
Ein Multiplaktion ist doch nichts weiter als mehrere Additionen(plus/+). Soviel wie es halt mal genommen wird. Mit Division(geteilt rechnen) ist es auch so. Das weiß ja sogar ichbis denne,DANIEL
-
Optimizer schrieb:
Theoretisch könnte man mit dieser Funktionalität mul und div durchführen, aber ich glaube jetzt einfach mal nicht, dass das so gemacht wird.
-
Schande über mich wenns falsch ist, aber war das nicht was mit links-schifts bei der multiplikation (im einfachtsten fall natürlich bei vielfachen von zwei) und rechts-schifts bei divisionen?
leider habe ich gerade den oberschelp nicht da, aber vielleicht hat den ja gerade jemand anders hier zur hand.gruß,
khadgar
-
hm, vorzeichen merken, in normale darstellung umwandeln, multiplizieren, vorzeichen errechnen, 2er komplement machen. hilft das?
-
Nein, ich möchte natürlich wissen, wie ein Prozessor das macht.
-
rechnet der überhaupt im 2er komplement?
-
Optimizer schrieb:
Nein, ich möchte natürlich wissen, wie ein Prozessor das macht.
Welcher?
-
Korbinian schrieb:
rechnet der überhaupt im 2er komplement?
Weiß ich nicht. Auf jeden Fall gibt es Unterschiede zwischen signed mul und unsigned mul.
interpreter schrieb:
Welcher?
Mir egal.
-
das signed und unsigned mul wirst du vermutlich im flags register finden...
-
imo rechnet der Prozessor die Multiplikation als mehrmalige Addition und entsprechend auch bei der Division. Meine mich zumindest daran zu erinnern, dass mein Info Lehrer sowas mal losgelassen hat
-
Das wäre auch das einzige, was mir so einfällt. Das würde aber bedeuten, dass diese Operationen
- keine konstante Laufzeit haben
- 93875986345986 / 2 ewigst lange dauern mussund beides kann ich mir nicht so recht vorstellen.
@Korbinian: Ich weiß nicht so recht, worauf du hinauswillst. Ist dir meine Fragestellung klar?
-
ja eigentlich schon
ist dir klar wie eine cpu funktioniert?
in der cpu wird nur addiert und subtrahiert. solche großen zahlen werden "schnell" multipliziert/dividiert. sprich geshiftet und dann noch n paar mal addiert/subtrahiert. beim addieren können gewisse sachen auftreten: carry bit, etc. und z.b. auch ein negative flag. also kann man multiplizieren und das negative flag entsprechend setzen, wenn eine der beiden negativ war. hoffe das hilft
-
solche großen zahlen werden "schnell" multipliziert/dividiert. sprich geshiftet und dann noch n paar mal addiert/subtrahiert.
bei 9238479823 / 7 kann man doch nichts shiften, oder sehe ich das falsch?
-
ok dann halt die "normale" division, ich kanns mal raussuchengeht wie im zehnersystem nur im 2er
-
Ich kann die nicht mehr - nur noch mit Polynomen.
Aber mal im Ernst: beim schriftlichen Teilen wird doch die Division auch nur zerlegt.
Ist das wirklcih der Ansatz, den man verwendet? Oder meinst du ein ganz anderes Verfahren?Und ja, ich weiß im Großen und Ganzen, wie ein Prozessor prinzipiell funktioniert.
-
-
Stichwort Booth-Algorithmus
Für Division und Multiplikation gibt es doch extra Divisions- und Multiplikations-Werke, soweit ich weiss.
-
@vR:
Das Entscheidende fehlt leider.
Wie im 2er-Komplement multipliziert und dividiert wird, bleibt offen.
-
Würd mich jetzt aber auch interressieren, da wir in der Schule gerade gelernt haben wie man multipliziert, aber da wird einfach so multipliziert wie man es von Mathe her kennt, nur eben im Binärsystem.