Multiplikation/ Division

Gast #18807
Lesenswert?

Hallo,

seit längerem suche ich eine Multiplikations- oder Divisionsroutine. Ich 
bin ein relativer Anfänger. Angeblich brauche ich dafür eine 32 bit 
Multiplikation, gefunden habe ich noch keine brauchbare Routine.

Mein Problem, ich lese Werte (Hex) in Speicher (89AT4051 Atmel) ein:

53H (Tausender), 52H (Hunderter), 51H Zehner und 50H (Einer) Werte aber 
leider in Feet. Um daraus Meter zu machen, kann man das Feetergebnis 
entweder mit der festen Zahl 0,308 multiplizieren, oder durch die Zahl 
3,08 dividieren. Die Höhenwerte (Feet) verändern sich teilweise im 
Minutentakt. Die Genauigkeit im Ergebnis soll vor dem Komma enden.

Ich habe schon in Foren nachgefragt und gute Tipps bekommen (Routinen 
Beschreibungen in  englisch, Routinen in anderen Programmiersprachen, 
ich soll bei Google suchen, etc.)  aber eine funktionierende Lösung noch 
nicht.

Kann mir hier jemand helfen?

Gruß

Wolfgang
Gast #18808
Lesenswert?

Also daß multiplizieren mit 0,308 dasselbe Ergebnis liefert wie eine 
Division mit 3,08, bezweifle ich erst mal.
Ansonsten solltest du auf jeden Fall erst mal deine Eingangsgröße in 
eine Dualzahl wandeln (mit BCD-Zahlen rechnet es sich nur ganz 
umständlich). Gar kein Problem ist das Ganze, wenn du irgendeinen 
Hochsprachen-Compiler verwenden würdest (C, Basic oder Pascal), dann 
kannst du das ganz bequem mit Gleitkommazahlen verarbeiten.
Mit Assembler geht es auch. Die Zahl wird mit 308 multipliziert, 
anschließend durch 1000 geteilt, schon hast du eine Multiplikation mit 
0,308. Auf jeden Fall mußt du beachten, daß das Zwischenergebnis noch in 
deine Variable passt, also mit long-Variablen arbeiten, 4byte. Die 
entsprechenden Multiplikations/Divisions-Routinen findest du sicher im 
Netz.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren