www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Division im Binärsystem


Autor: Raphael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
ich habe folgende Frage:

Kann mir jemand erklären nach welchem Prinzip eine CPU eine Division
durchführt. Addition, Substraktion und Multiplikation sind mir klar,
aber wie das beim dividieren funktionieren soll?
Vielleicht kenn ja auch jemand einen Link zu einer Seite auf der so
etwas erklärt wird, wenns geht bitte Deutsch (bin erst 13 und mein
Englisch ist noch ned so perfekt :-) )

MfG Raphael

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Exakt genauso wie Du die schriftliche Division mit Papier und Bleistift
durchführst. Nur eben im Binärsystem statt im Dezimalsystem.

Autor: Santa Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Raphael,

Die Division läuft genau so ab, wie Du das in der Schule gelernt hast,
bloß im Zweiersystem.  Auf der Atmel-Homepage http: www.atmel.com gibt
es zu den AVR-Controllern eine application note mit Divisionroutinen
(für einfachere Controller, die das nicht per Hardware können) nebst
einigen Erklärungen dazu.  Ist allerdings alles auf englisch.  Kannst
Dich ja trotzdem durchquälen (denk einfach daran, daß Dein Englisch
dadurch immer besser wird!).

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Raphael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann ich das auch mit multiplikation machen?
Ich habe nämlich gerade einfach die 2 Operanden multipliziert und dann
entspricht bei mir das Ergebniss immer der Anzahl der Bits vom MSB aus
gemessen, wie die länge der Zahl durch die dividiert wird, oder ist das
Zufall?

Beispiel  36/6=6 :

  100100        (=36)
     110        (*6)
11011000        (=216)
---
110             (=6)

Kann man das so Rechnen?

Würde mich über Hilfe sehr freuen!
Gruß Raphael

Autor: Raphael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, stimmt nicht!

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du durch einen festen Wert dividieren willst, kannst du es
natürlich auch als Multiplikation mit dem Kehrwert machen.

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei Fliesskommarechung kann man eine Division durch Multiplikation mit
dem Kehrwert ersetzen. Bei ganzzahliger Rechnung ist das nicht so ohne
weiteres möglich.

Das bringt einen aber nur weiter, wenn der Nenner konstant ist.

Autor: Raphael (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hab mir die App Note von Atmel mal angeschaut, aber hab mal Fragen
dazu:

Hab mal ein Bild vom Programmablauf angehängt.
Der Text dazu lautet so:

1)Clear remainder and carry
2)Load loop counter with 17
3)Shift left dividend into carry
4)Decrement loop counter
5)If loop counter=0, return
6)Shift left carry (from dividend/result) into remainder
7)Substract divisor from remainder
8)If result negativ, add back divisor, clear carry and goto step 3
9)Set carry and goto step 3

Fragen:
1) Bedeutet Schritt 3 dass ich das MSB ins Carry schieben soll, oder
das das Carry ins LSB kommen soll? Selbe frage bei Schritt 6

2) In dem ganzen Ablauf wird das Result garnicht erwähnt, außer bei
Schritt 6. Wie soll darin dann das Ergebniss stehen, wenn nur der Rest
(Remainder) benutzt wird?

Irgendwie steht mir da jemand auf der Leitung
Gruß Raphael

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falsche Sprache, aber noch einfacher geht's nicht:
http://courses.cs.vt.edu/~cs1104/BuildingBlocks/di...
Besonders unter "Further Example".

Autor: Raphael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Link, jetzt hab ich verstanden!!
Gruß Raphael

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.