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


von LuisBaatz (Gast)


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)


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)


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)


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)


Lesenswert?

Danke!!!

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


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.

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
Noch kein Account? Hier anmelden.