Forum: Digitale Signalverarbeitung / DSP / Machine Learning Binärzahlen runden, abschneiden, betragsschneiden


von Jürgen (Gast)


Lesenswert?

Hallo,

ich habe ein theoretisches Problem:

Ich habe die Zahl 5/8 (=0,625) im Zweikomplement-Fractional-Format 
gegeben. Ich habe 8 Bit dafür.

0.101 000

Kein Vorzeichen, dann 2^-1 +2^-3 = 1/2 + 1/8 = 5/8 = 0,625.

Jetzt soll ich die Zahle auf 4 Bit reduzieren. Einmal durch runden 
round(), einmal durch Wertschneiden floor() und einmal mittels 
betragsschneiden fix().

Ich sollte aber auch noch verstehen, was dabei passiert.

Ich habe mal mit wertschneiden angefangen. Meiner Logik nach bleiben 
danach noch 0.101 über. Das entspricht aber immer 5/8. Die Ausgabe sagt 
mir aber 1/2.

Weiß einer weiter?

Danke und beste Grüße,
Jürgen

von ... (Gast)


Lesenswert?

Im Code fehlt ein Semikolon. Ist immer so.

von Digitalo (Gast)


Lesenswert?

Jürgen schrieb:

> Jetzt soll ich die Zahle auf 4 Bit reduzieren. Einmal durch runden

auf welche?

bei einer echten Rundung braucht es einen Überlaufschutz

von Gerald G. (gerald_g)


Lesenswert?

Jürgen schrieb:
> Ich habe 8 Bit dafür.
>
> 0.101 000

Das sind keine 8 Bit

Jürgen schrieb:
> Jetzt soll ich die Zahle auf 4 Bit reduzieren.

Jürgen schrieb:
> Meiner Logik nach bleiben
> danach noch 0.101 über.

Das sind keine 4 Bit

von Valko Z. (hydravliska)


Lesenswert?

Jürgen schrieb:
> ...
> Ich habe mal mit wertschneiden angefangen. Meiner Logik nach bleiben
> danach noch 0.101 über. Das entspricht aber immer 5/8. Die Ausgabe sagt
> mir aber 1/2.
> ...

Was heisst "die Ausgabe"? Wie rechnest du das? Wenn du die gleiche 
Rechenschritte anwendest sind 0.101000 und 0.101 gleich (2^-1 + 2^-3).

Gruß

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.