Hallo ich habe eine Formel zur Berechnung der Schritte eines Servos bei Eingabe eines Winkels: Schritte = ((100*Winkel)/9)+500 Wir wollen aber diese Formel in einer Fixed Point Darstellung bekommen! Hat einer von euch eine Idee, wie man sowas machen könnte? D.h. anstatt der 9 im Nenner den shift Operator verwenden? Vielen Dank im voraus.
Faktor rausziehen
Faktor Erweitern mit zum Beispiel 256/9. (Irgendwas mit 2^n/9 an dieser Stelle ist sinnvoll. Wobei vielfache von n mit 8 am allereinfachsten dividiert werden können).
Vereinfachen und Zähler runden (Sodass man einen Integer bekommt).
Umstellen, sodass Division als letztes ausgeführt wird.
Jetzt hast du keine wirkliche Division mehr. Das Teilen durch 256 wird durch einfaches Weglassen des untersten Bytes gemacht. Beachte aber, dass du durch die Rundung von 100*256/9 einen Fehler reinbekommst. Je nach Größe der Variable Winkel und maximal erlaubtem Fehler musst du mit 65536/9 erweitern. Beachte auch, dass Überläufe bei der Multiplikation im Zähler entstehen können. Also auch hier wieder auf deinen Wertebereich achten.
> Mit Schieben geht das auch:
Ach, echt? Ich dachte, Simon hätte seine Umformung derart, dass im
Nenner nur noch Zweierpotenzen stehen, nur zum Spaß gemacht.
@Detlef_a Dein PDF sieht interesant aus. Was steht auf den Seiten 0-201 und 202ff; also was ist das für ein Buch/Script? Ist der Rest empfehlenswert? avr
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.