Forum: PC Hard- und Software Wie genau funktioniert das Q-Format?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von LuisBaatz (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Q1.7 + Q2.6 = Q2.6

Soweit ich es verstanden habe ist das Q-Format die Menge an Werten, die 
mit einer bestimmten Wortlänge und einer bestimmten Interpretation der 
Bitfolge, zwischen zwei Zahlen abgebildet werden kann.

Was sind bedeuten nun aber diese Zahlen hinter dem Q und was bedeutet 
die obere Aussage?

von Dussel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Soweit ich ganz entfernt in Erinnerung habe, sind das die Vorkomma- und 
Nachkommastellen. Das würde bedeuten, dass die Summe einer Zahl mit 
einer Vor- und sieben Nachkommastellen und einer Zahl mit zwei Vor- und 
sechs Nachkommastellen eine Zahl mit zwei Vorkomma- und sechs 
Nachkommastellen ist.
Das wäre auch sinnvoll, da man die zwei Vorkommastellen im Ergebnis 
irgendwie darstellen muss und dafür bei acht Bit eine Nachkommastelle 
wegfallen lassen kann, die sowieso im Ergebnis nicht relevant ist.

Es kann aber auch sein, dass im komplett falsch liege.

von S. R. (svenska)


Bewertung
2 lesenswert
nicht lesenswert
Dussel schrieb:
> Es kann aber auch sein, dass im komplett falsch liege.

Nee, das stimmt schon so.

Wenn man das genauer aufdröselt (ich zitiere mal aus "Embedded Systems 
with ARM Cortex-M Microcontrollers in Assembly Language and C"), dann 
gibt es zwei  Formate:

"UQm.n" bedeutet 'm' Bits vor dem Komma, 'n' Bits hinter dem Komma, 
unsigned. UQ5.3 sind also 8 Bit lang, das MSB hat die Wertigkeit 2^4 und 
das LSB die Wertigkeit 2^(-3).

"Qm.n" bedeutet 'm-1' Bits vor dem Komma, 'n' Bits hinter dem Komma, 
signed mit Vorzeichenbit. Q4.3 ist also 8 Bit lang, das MSB hat die 
Wertigkeit 2^3 und das LSB die Wertigkeit 2^(-3) und das Vorzeichenbit 
gibt an, ob die Zahl negativ ist (1) oder nicht (0).

Q7 ist eine Abkürzung und steht für Q0.7, weil man oft nur Zahlen im 
Bereich 0..1 oder -1..+1 braucht.

Nachtrag: In der Realität wird die Trennung in UQm.n und Qm.n oft nicht 
vorgenommen. Was genau gilt, hängt also davon ab, wie der Rest der 
Umgebung (z.B. das Datenblatt vom Chip oder der Compiler) das definiert; 
sollte meist drinstehen oder anhand eines Beispieles erkennbar sein.

: Bearbeitet durch User
von S. R. (svenska)


Bewertung
1 lesenswert
nicht lesenswert
LuisBaatz schrieb:
> Q1.7 + Q2.6 = Q2.6
>
> Was sind bedeuten nun aber diese Zahlen hinter dem Q und
> was bedeutet die obere Aussage?

Die obere Aussage bedeutet, dass bei deiner Rechnung etwas Genauigkeit 
verloren geht, um den Wertebereich einzuhalten. Q2.6 kann größere Zahlen 
darstellen, Q1.7 kann Zahlen genauer darstellen.

Die Summe von beiden muss in jedem Fall die größere Zahl darstellen 
können (sonst ist das Ergebnis schlicht falsch), verliert also die 
höhere Genauigkeit des ersten Summanden. Überträge werden nicht 
berücksichtigt, d.h. ein Überlauf kann trotzdem stattfinden; um das zu 
verhindern, brauchst du mehr Bits.

von LuisBaatz (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Danke!!!

von Hannes J. (Firma: _⌨_) (pnuebergang)


Bewertung
0 lesenswert
nicht lesenswert
LuisBaatz schrieb:
> Q1.7 + Q2.6 = Q2.6

> Was sind bedeuten nun aber diese Zahlen hinter dem Q

Q1.7:

8-Bit Zahlendarstellung mit einem Vorzeichen-Bit, keinem Integer-Teil 
(Null Integer-Bits), sieben Bruchteil-Bits.

Q2.6:

8-Bit Zahlendarstellung mit einem Vorzeichen-Bit, einem Integer-Bit, 
sechs Bruchteil-Bits.

> und was bedeutet
> die obere Aussage

Das auf dem System für das die Aussage getroffen wurde bei der Addition 
einer Q1.7 mit einer Q2.6 Zahl das Ergebnis als Q2.6 dargestellt wird.

Ob das LSB der Q1.7 Zahl dabei einfach abgeschnitten wird oder welche 
andere Rundungsvorschrift vor oder nach der Addition verwendet wird ist 
nicht gegeben.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.