Festkomma - Arithmetik

OP #722638
Hallo,

das Prinzip, das hinter der Festkomma-Arithmetik steckt, ist mir glaub 
ich klar; nach dem Komma finden sich von links nach rechts die 
Bruchteile 1/2, 1/4, 1/8....
Wie ich es implementieren soll leider nicht so ganz.

Eine Division / Multiplikation mit einer Zweier-potenz ist trivial.
Ich muss aber leider mit dem Wert 60 multiplizieren...

Wie stell ich das an? Ich würde intuitiv zuerst den Ganzzahl-Anteil 
multiplizieren, und dann die Nachkommastellen*60 drauf addieren.

Aber wie muss ich die Nachkommastellen anschauen? Einfach aus dem Vektor 
ausschneiden und dann mal 60 nehmen ist ja logischerweise Unsinn.
Gast #722689
Da 60 selbst eine Ganzzahl ist [1], geht das einfach: Den Wert der 
Festkommazahl als Ganzzahl interpretieren und mit der Ganzzahl 60 
multiplizieren [2], und das Ergebnis als Festkommazahl interpretieren.

Das funzt, weil die Festkommadarstellung A der Zahl A*2^(-n) entspricht 
(bei n Nachkommastellen in der Darstellung). Die Ganzzahldarstellung 
B=60 entspricht auch der Zahl B=60, und dann ist
(A*2^(-n)) * B = (A*B) * 2^(-n)

[1] Schwieriger wirds wenn beide Faktoren Festkommazahlen sind, 
insbesondere wenn du dabei weder Genauigkeit noch Wertebereich verlieren 
willst. Wenn du darüber stolperst ist das ne Fragestellung für sich 
wert.

[2] Geht einfach aber langsam, wenn es einen Befehl für 
Ganzzahlmultiplikation gibt. Ansonsten ist
60*x = (64 - 4)*x = 64*x - 4*x = (x << 6) - (x << 2)
-> Zweimal schieben, eine Subtraktion

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.