www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 16/16Bit in 32/16Bit Division umwandeln


Autor: Jürgen Hems (misteret)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag!
Ich sitze jetzt schon längere Zeit an einem für euch sicherlich kleinem 
Problem!!

Ich programmiere mit dem SAB 80C517A.
In dem µController sind Rechenoperationen implementiert, zum Beispiel 
32/16 Bit und 16/16 Bit. Ich muss eine 16/16Bit Operation durchführen.
Der µC gibt dann in 2 Registern den Wert und den Rest aus.

Bei mir ist jetzt der Dividend kleiner als der Divisor, ich erhalte also 
einen Dezimalwert zwischen 0 und 1. Der µC gibt also einen Rest von Null 
aus!

Ich würde jetzt den 16Bit Dividend in einen 32 Bit Wert umwandeln, dann 
bekäme ich einen Integerwert ausgegeben, nur nicht mehr als Rest, 
sondern als Ganzzahlwert.


Ich grübel schon ne ganze Weile, vielleicht kann hier mir ja jemand 
helfen

Danke!!

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei x/y mit x < y sollte aber ein Rest übrig bleiben. Den brauchste nur 
noch richtig zu interpretieren.

Autor: Jürgen Hems (misteret)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na ich hab mir mal ein Beispiel gemacht:

zB:
a=44560
b=50000

a/b = 0,8912

Der µC Speicher dann ab:
Ergebnis:0, Rest:0

Der Speichert ja nur ganze zahlen als Rest ab, das geht ja nur wenn b>a!

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann ist deine Divisionsroutine schlicht und einfach falsch 
programmiert.
Bei Ganzzahlrechnung geht das so:

a=44560
b=50000

a / b = Ergebnis: 0, Rest: 44560.

Autor: Jürgen Hems (misteret)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja genau genau, du hast natürlich Recht!

Ich wollte das jetzt umwandeln in einen 32Bit Wert, damit ich als Rest 
den eigentlichen Dezimalwert erhalte:

also
anstatt 44560/50000=0,8912

möchte ich
x/50000 = 8912

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

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.