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
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.
Wolfgang, gehe nach 8052.com und schaue auf der linken Seite nach: CODE LIBRARY Dort findest Du '' Math Routines '' von Marshal. Mit dem Material kommst Du an Dein Ziel. Pass auf ,dass Du dezimal nicht mit binaer verwechselst. Viel Spass beim Dazulernen ! ed
Du kannst auch das Tutorial auf 8052.com lesen. Dort sind die einzelnen Rechenarten für 16-bit erklärt. Das Ganze auf 32-bit zu erweitern, dürfte nicht mehr allzu schwierig sein.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.