Festkomma und Signed Wertrepäsentation

OP #6586490
Lesenswert?

Hallo Leute,

derzeit komme ich gerade ins schwimmen mit den FXP.

Lt. Aufgabenstellung habe ich ein 8-Bit, mit dem ein 2^-3 bis 2^+4 
signed Wert repräsentiert werden soll.

Das MSB soll das signum repräsentieren, also:
1
| 7   | 6   | 5   | 4   | 3   | 2    | 1    | 0    |
2
+-----+-----+-----+-----+-----*------+------+------+
3
| SGN | 2^3 | 2^2 | 2^1 | 2^0 | 2^-1 | 2^-2 | 2^-3 |
4
+-----+-----+-----+-----+-----*------+------+------+
5
| SGN | 8   | 4   | 2   | 1   | 1/2  | 1/4  | 1/8  |
6
                              ^
7
                           Dezimalpunkt

Jetzt ist die Frage nach dem *min/max Wert des digitalen 
Zahlenbereiches*. Addiere ich nun alles komme ich auf 127/8, also 15.875 
- und zwar pos. und neg.; sprich +/-127/8

Nun scheint es einige Quellen zu geben, die das MSB/SGN mit in den 
Wertebereich reinrechnen (womit dann ja das signum Bit seine Information 
verloren hat), was IMO verkehrt ist - das signum repräsentiert ja keine 
Zahl.

Der underlaying Integer hat ja nun einen Wertbereich von -128 bis +127, 
das dürfte allgemeiner Konsens sein ....

Die Lösung sagt nun: -16 ... 15 für min/max, was IMO auch falsch ist. 
Ich komme zum Schluss, das die Aufgabenstellung mit 2^-3 bis 2^+4 
bereits verkehrt ist.

Wie ist denn die Nomenklatur, bzw. was ist richtig. Die Quellen scheinen 
sich um Aussagen dazu auch etwas zu drücken. Entweder schön mathematisch 
ist unsigned und damit damit wiederum sehr einfach ...
#6586549
Lesenswert?

Olaf .. schrieb:
> Die Lösung sagt nun: -16 ... 15 für min/max, was IMO auch falsch ist.

Jup, ist inkorrekt.

Korrekt wäre [-16,16[ als Wertebereich, d.h. die +16 ist außerhalb.

Man könnte sich auch die Mühe machen die 01111111 als dezimale Kommazahl 
darzustellen. Ist aber einfach 16 - 2^-3.

Olaf .. schrieb:
> Ich komme zum Schluss, das die Aufgabenstellung mit 2^-3 bis 2^+4
> bereits verkehrt ist.

Nö, nur Deine Interpretation. 2^-3 ist die kleinste von Null 
verschiedene darstellbare Zahl, -2^+4 die mit dem größen absoluten 
Betrag.

Bei den Festkomma Sachen will man praktisch immer sowohl den 
Wertebereich als auch die Genauigkeit wissen.
Gast #6586557
Lesenswert?

Olaf .. schrieb:
> Die Lösung sagt nun: -16 ... 15 für min/max, was IMO auch falsch ist.
> Ich komme zum Schluss, das die Aufgabenstellung mit 2^-3 bis 2^+4
> bereits verkehrt ist.

Die Aufgaben stellt das Leben - warum soll die Aufgabenstellung falsch 
sein?

Es ist an dir, eine Lösung zu finden oder zu beweisen, dass es im Rahmen 
der in der Aufgabenstellung genannten Randbedingungen (8-Bit) keine 
Lösung gibt.
OP #6586574
Lesenswert?

OK; besser getrennt:

Aufgabe: Lt. Aufgabenstellung habe ich ein 8-Bit, mit dem ein 2^-3 bis 
2^+4
signed Wert repräsentiert werden soll.... Jetzt ist die Frage nach dem 
*min/max Wert des digitalen Zahlenbereiches*.

Die Lösung sagt nun: -16 ... 15 für min/max ...

-------------------------------------------------------

Jim M. schrieb:
>> Die Lösung sagt nun: -16 ... 15 für min/max, was IMO auch falsch ist.
>
> Jup, ist inkorrekt.
>
> Korrekt wäre [-16,16[ als Wertebereich, d.h. die +16 ist außerhalb.

OK, lt. math. Schreibweise offenes Intervall (-16, +16), d.h. 
ausschließlich der 16,0. (geschlossenes Intervall wäre dann [-16,+16] 
mit/einschl. der 16). Zumindest lese ich aus der Antwort, dass das 
Signum nicht in die Werte- Repräsentation einfließt, was ja auch 
natürlich ist/wäre.

Letzlich komme ich nur bis zu +/-(15 7/8) als repräsentierten Wert ran.

Jim M. schrieb:
> Ich komme zum Schluss, das die Aufgabenstellung mit 2^-3 bis 2^+4
>> bereits verkehrt ist.
>
> Nö, nur Deine Interpretation. 2^-3 ist die kleinste von Null
> verschiedene darstellbare Zahl, -2^+4 die mit dem größen absoluten
> Betrag.

Bei ersterem stimme ich zu. Danach steige ich aus: -2^4 ist ja genau das 
Signum Bit auf '1', alles andere '0' in Deinem Bsp.

0b11111111 = -128
0b10000000 = +127

wäre es bei den bekannten 8-Bits. Imo flutscht jetzt die Denkweise 
daraus in den Wertebereich der "skalierten" Fixpoint Zahl. Ich bin wegen 
der Zählweise des SGN irritiert ...
Gast #6586601
Lesenswert?

Ich vermute, die Aufgabe ist einfach schlampig gestellt.  2^-3 und 2^4 
soll einfach aussagen, dass 3 Stellen hinterm und 4 vorm Komma 
existieren sollen.  Dazu noch ein Bit für's Vorzeichen.

Andere Interpretationen ergeben wenig Sinn bzw erfordern ein sehr 
eigenwilliges Format (ohne 0!?!).
Gast #6586609
Lesenswert?

1
 | 7   | 6   | 5   | 4   | 3   | 2    | 1    | 0    |
2
 +-----+-----+-----+-----+-----*------+------+------+
3
 | 2^4 | 2^3 | 2^2 | 2^1 | 2^0 | 2^-1 | 2^-2 | 2^-3 |
4
 +-----+-----+-----+-----+-----*------+------+------+
5
 | -16 | 8   | 4   | 2   | 1   | 1/2  | 1/4  | 1/8  |
6
                               ^
7
-16 bis +15,875
8

9
-8   = -16 + 8 =                  0b1100 0000
10
-0,5 = -16 + 8 + 4 + 2 + 1 + 0.5  0b1111 1100
11
+1,5 = 1 + 0,5                    0b0000 1100
12

13
-2,25     0b1110 1110
14
+1,75     0b0000 1110
15
-----
16
-0,50     0b1111 1100
Gast #6586628
Lesenswert?

Es soll eine Kodierung für +/- 0.125..16 erstellt werden.  Null ist 
nicht dabei, dagegen -16 und +16.  Über die zur Verfügung gestellten 
Bits, kann man sich Gedanken über die Auflösung machen - wird aber 
bereits Spekulation (gleichmäßige Schritte, oder doch logarithmisch?).

Das ist einfach eine schlampig gestellte Aufgabe.  Nehmt die 
naheliegenste Interpretation (2er Komplement mit Wertigkeit 1/8) und die 
Chance, dass ihr richtig geraten hat, ist ziemlich hoch.
OP #6586745
Lesenswert?

Korg schrieb:
>
1
> -16 bis +15,875
2
> 
3
> -8   = -16 + 8 =                  0b1100 0000
4
> -0,5 = -16 + 8 + 4 + 2 + 1 + 0.5  0b1111 1100
5
> +1,5 = 1 + 0,5                    0b0000 1100
6
> 
7
> -2,25     0b1110 1110
8
> +1,75     0b0000 1110
9
> -----
10
> -0,50     0b1111 1100
11
> 
12
>

Das Bsp. ist eigentlich selbst erklärend.

Ein Einer-Komplement ist das jedoch nicht, richtig? Wie nennt man solche 
Darstellung denn?
OP #6588635
Lesenswert?

vielen Dank für die Erklärungen! Ich muss jetzt aber erst mal meinen 
Knoten aus dem Gehirn bekommen.

Wenn es allg. beim Zweierkomplement heißt, wir invertieren und addieren 
1 heißt es wohl eher: wir invertieren und addieren eine binäre '1' (am 
LSB), unabhängig vom Format, welches die Bitfolge repräsentiert (zB. 
hier 1Q4.3: Signum + 4 integer + 3 fractional parts).

Und: Das gesetzte MSB repräsentiert das Signum - rechnet man auf 
Bit-Ebene kommt man beim 2er Komplement auf genau diese bitweise XOR 
Bit-Addition, rechnet man im binären "Stellenwertsystem" wird das MSB 
mit dem Wert -2^MSB errechnet und der Rest wie gehabt schlicht addiert.

Korrekt? Ich muss das 'mal mit ein paar Zahlen für 
Add./Sub.durchprobieren =)
Gast #6588794
Lesenswert?

Olaf .. schrieb:
> Wenn es allg. beim Zweierkomplement heißt, wir invertieren und addieren
> 1 heißt es wohl eher: wir invertieren und addieren eine binäre '1' (am
> LSB), unabhängig vom Format

Die Additionseinheit im µC rechnet immer mit natürlichen Zahlen oder 
ganzen Zahlen und weiß nicht, wo du dir das Komma denkst. Das Fixkomma 
gibt es nur in deinem Kopf (und allenfalls bei der Ausgabe).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren