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


von Jürgen H. (misteret)


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!!

von Sven P. (Gast)


Lesenswert?

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

von Jürgen H. (misteret)


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!

von Sven P. (Gast)


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.

von Jürgen H. (misteret)


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

von Falk B. (falk)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.