16 oder 24 bit Gleitkommazahlen

Gast #390877
Hallo zusammen,

Ich brauch mal wieder etwas Hilfe, komme absolut nicht weiter.
Folgendes Problem: ein TAS3002 soll als Equalizer eingesetzt werden
(weiter unten in einem Thread schonmal beschrieben). Das Ding benötigt
24 bit Filterkoeffizienten in einem 4.20 Format... erstmal egal.

http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt
Hier habe ich (hoffentlich) passende Formeln für die Koeffizienten
gefunden, die dann ein PIC berechnen soll.

http://www.bknd.com/cc5x/math.shtml
Das sind Beschreibungen zu den Bibliotheken, die der freie C Compiler
verwendet. Hier der Auszug, den ich nicht nachvollziehen kann (16 Bit,
weils übersichtlicher ist):

16 bit floating point format:

  address  ID
   X       a.low8  : LSB, bit 0-6 of mantissa, bit 7: sign bit
   X+1     a.high8 : MSB, bit 0-7 of exponent, with bias 0x7F

   bit 7 of mantissa is a hidden bit, always equal to 1
   zero (0.0) :  a.high8 = 0 (mantissa & sign ignored)

  MSB LSB
   7F 00 : 1.0   =  1.0  * 2**(0x7F-0x7F) = 1.0 * 1
   7F 80 : -1.0  = -1.0  * 2**(0x7F-0x7F) = -1.0 * 1
   80 00 : 2.0   =  1.0  * 2**(0x80-0x7F) = 1.0 * 2
   80 40 : 3.0   =  1.5  * 2**(0x80-0x7F) = 1.5 * 2
   7E 60 : 0.875 =  1.75 * 2**(0x7E-0x7F) = 1.75 * 0.5
   7F 60 : 1.75  =  1.75 * 2**(0x7E-0x7F) = 1.75 * 1
   7F 7F : 1.9921875

Woher nehmen die da den Faktor 1.0 oder 1,75? Die Basis und den
Exponent kann man ja noch aus den beiden Bytes ablesen..
Ich wäre froh wenn mir hier jemand auf die Sprünge helfen könnte...

M f G
Sebastian
#390878
das LSB bestimmt den Vorfaktor, 0x00 entspricht 1.0, 0x40 entspricht
1.0+0.5, 0x60 entspricht 1.0+0.5+0.25,
0x7f=1.0+0.5+0.5/2+0.5/4+0.5/8+0.15/16+0.5/32+0.5/64=1.9921875. Das
oberste Bit vom LSB macht das Vorzeichen i.e. 0x80=-1.0

Cheers
Detlef

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 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]
  • [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.