Forum: Mikrocontroller und Digitale Elektronik Festkommazahlen in Assembler


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 Thomas S. (thomas_s860)


Bewertung
-3 lesenswert
nicht lesenswert
Hallo Forum, ich würde gerne Festkommazahlen in meinem Assemblerprogramm 
verwenden. Habe viel gegooglet und allerhand gefunden, nur nichts 
hilfreiches für mich. Bis jetzt habe ich folgende Erkenntnisse 
gesammelt. Bei 32 Bit Festkommazahlen ist das erste Bit das Vorzeichen, 
dann kommen 8 Bit für den Exponenten und der Rest ist für die Mantisse. 
Da kommt die erste Frage, hat die Mantisse auch ein Vorzeichen? Bisher 
dividierte ich mit einem Assemblerprogramm, bei dem ich  die Ganzzahl 
und den Rest erhielt. Wie komme ich von der Ganzzahl und dem Rest auf 
eine Festkommazahl?

Habt ihr ein paar Anregungen für mich?

von Fitzebutze (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Mantisse/Exponent = Fliesskomma.
Also was jetzt davon?

von Lothar M. (lkmiller) (Moderator) Benutzerseite


Bewertung
5 lesenswert
nicht lesenswert
Thomas S. schrieb:
> Habt ihr ein paar Anregungen für mich?
Eine Festpunktzahl hat keine Mantisse, sondern nur einen "gedachten 
Punkt" irgendwo mitten in den Bits. Nach jeder Rechnung muss das 
Ergebnis dann ggfs. entsprechend "zurechtgerückt" werden.

: Bearbeitet durch Moderator
von Wolfgang (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Thomas S. schrieb:
> Bei 32 Bit Festkommazahlen ist das erste Bit das Vorzeichen,
> dann kommen 8 Bit für den Exponenten und der Rest ist für die Mantisse.

Du bist in der falschen Rubrik gelandet. Was du da beschreibst sind 
Floating Point Zahlen.
Oft werden heutzutage die im IEEE-754-Standard definierten Formate 
verwendet.
https://de.wikipedia.org/wiki/IEEE_754#Zahlenformate_und_andere_Festlegungen_des_IEEE-754-Standards

> Da kommt die erste Frage, hat die Mantisse auch ein Vorzeichen?
Wie willst du sonst negative Zahlen darstellen?

von Wolfgang (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Lothar M. schrieb:
> Eine Festpunktzahl hat keine Mantisse.

Natürlich muss sie die haben. Genau genommen besteht eine Festpunktzahl 
nur aus der Mantisse, weil man den (sowieso festen) Exponenten gar nicht 
immer mitschreibt/speichert.

von MaWin (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Thomas S. schrieb:
> ist das erste Bit das Vorzeichen, [..] der Rest ist für die Mantisse.
> Da kommt die erste Frage, hat die Mantisse auch ein Vorzeichen?

Du hast dir das doch selbst beantwortet.

Einmal davon abgesehen, dass das dann keine Festpunktzahl ist.

von c-hater (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Thomas S. schrieb:

> Hallo Forum, ich würde gerne Festkommazahlen in meinem Assemblerprogramm
> verwenden. Habe viel gegooglet und allerhand gefunden, nur nichts
> hilfreiches für mich. Bis jetzt habe ich folgende Erkenntnisse
> gesammelt. Bei 32 Bit Festkommazahlen ist das erste Bit das Vorzeichen,
> dann kommen 8 Bit für den Exponenten und der Rest ist für die Mantisse.

Kompletter Unsinn.

Festkomma hat nix mit Fließkomma zu tun. Es gibt also insbesonder nix in 
der binären Repräsentation, was man als Exponent bezeichnen könnte. Der 
steckt
allein in der Interpretation der Zahl. Wie auch die Tatsache, ob signed 
oder unsigned.

von Pandur S. (jetztnicht)


Bewertung
0 lesenswert
nicht lesenswert
Ich verwende fuer interne Rechnungen, zb Regelungsalgorithmen, immer 
Festkomma zahlen. Ich rechne immer mit Longint, 32 bit. Dort denke ich 
mir den Punkt zB auf der 8. Stelle. Das ist aber erst wichtig wenn ich 
auf's Stellglied gehe. als zB Stellglied 0..32767 (15bit).

Da dividiere ich also durch 2^8, dh longint zahl shift right 8

von (prx) A. K. (prx)


Bewertung
2 lesenswert
nicht lesenswert
Je nach Plattform und Aufgabe muss es keine binäre Festkommadarstellung 
sein. So kann man bespielsweise auch in Hundertsteln rechnen. Ist aber 
nur sinnvoll, wenn eine schnelle Division zur Verfügung steht.

von Lothar M. (lkmiller) (Moderator) Benutzerseite


Bewertung
3 lesenswert
nicht lesenswert
Wolfgang schrieb:
> Genau genommen besteht eine Festpunktzahl nur aus der Mantisse
Uuuups, ist auch schon spät.
Eine Festpunktzahl hat keinen (expliziten) Exponenten. Der Exponent ist 
lediglich ein "gedachter" Punkt mitten in der Mantisse...

: Bearbeitet durch Moderator
von c-hater (Gast)


Bewertung
-3 lesenswert
nicht lesenswert
Pandur S. schrieb:

> Ich rechne immer mit Longint, 32 bit.

Schwachsinn. Damit gibst du einen wesentlichen Vorteil auf: Speed. Man 
rechnet natürlich immer nur mit so vielen Bits, wie für die Anwendung 
nötig und sinnvoll (natürlich unter Berücksichtung der Rechenfähigkeiten 
des Targets).

von (prx) A. K. (prx)


Bewertung
5 lesenswert
nicht lesenswert
c-hater schrieb:
>> Ich rechne immer mit Longint, 32 bit.
>
> Schwachsinn. Damit gibst du einen wesentlichen Vorteil auf: Speed. Man
> rechnet natürlich immer nur mit so vielen Bits, wie für die Anwendung
> nötig und sinnvoll (natürlich unter Berücksichtung der Rechenfähigkeiten
> des Targets).

Er schrieb, was er tut, nicht was andere tun sollen.
Was, wenn er immer nur 32-Bit Plattformen verwendet?

von c-hater (Gast)


Bewertung
-6 lesenswert
nicht lesenswert
(prx) A. K. schrieb:

> Er schrieb, was er tut, nicht was andere tun sollen.
> Was, wenn er immer nur 32-Bit Plattformen verwendet?

Dann ist das trotzdem Schwachsinn. Nämlich dann, wenn für die Anwendung 
die Genauigkeit von 32 Bit nicht ausreicht.

Beitrag #6569200 wurde vom Autor gelöscht.
von Pandur S. (jetztnicht)


Bewertung
0 lesenswert
nicht lesenswert
Nein, auf AVR. 32 bit longit fuer Regelungsroutinen brauchen nicht so 
viel Leistung. Ich rechne mit einem Internen Tick von 10ms.
Das beinhaltet die Messungen, Linearisierungen, Skalierungen, 
Algorithmen

Speziell rechne ich nicht in Messwert Einheiten, sondern in ADC 
Einheiten.
Eine Temperatur rechnet nicht in Celsius, oder aehnlich, sondern der 
Sollwert wird zu ACD Wert skaliert.

> So kann man bespielsweise auch in Hundertsteln rechnen. Ist aber
nur sinnvoll, wenn eine schnelle Division zur Verfügung steht.

Deswegen rechnet man nicht mit 100-steln, sonder zB 
Hundertachtundzwanzigsteln, weil die schneller dividieren.

von Lothar M. (lkmiller) (Moderator) Benutzerseite


Bewertung
2 lesenswert
nicht lesenswert
Pandur S. schrieb:
> Deswegen rechnet man nicht mit 100-steln, sonder zB
> Hundertachtundzwanzigsteln, weil die schneller dividieren.
Nur, wenn du bzw. deine Plattform ein Binärsystem verwendet.

Wenn du z.B. einen BCD-Rechner hast, dann bist du mit dem 10er-System 
besser bedient. Deswegen steht dort ja explizit "je nach Plattform".

: Bearbeitet durch Moderator
von zaungast (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Lothar M. schrieb:
> Wenn du z.B. einen BCD-Rechner hast

Gibt es sowas, ausser bei Taschenrechnern?

von (prx) A. K. (prx)


Bewertung
1 lesenswert
nicht lesenswert
Pandur S. schrieb:
> Deswegen rechnet man nicht mit 100-steln, sonder zB
> Hundertachtundzwanzigsteln, weil die schneller dividieren.

Wenn es weniger auf Tempo als auf korrekte Rundung ankommt, kann dezimal 
sinnvoller sein.

von MaWin (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Warum muss jetzt hier schon wieder herumgeätzt werden?

von Pandur S. (jetztnicht)


Bewertung
1 lesenswert
nicht lesenswert
BCD Platform ... wow, ein Beispiel waere ?

von 2⁵ (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Pandur S. schrieb:
> BCD Platform ... wow, ein Beispiel wäre?

Der 6502 konnte in BCD rechnen, auch die Saturn CPU der HP 
Taschenrechner

von Wolfgang (Gast)


Bewertung
1 lesenswert
nicht lesenswert
2⁵ schrieb:
> Der 6502 konnte in BCD rechnen, ...
Das Layout für den Chip wurde auch noch auf einem Zeichenbrett gemalt.

von Lothar M. (lkmiller) (Moderator) Benutzerseite


Bewertung
2 lesenswert
nicht lesenswert
Pandur S. schrieb:
> ein Beispiel waere ?
Es geht nur darum, dass diese völlige Absolutheit mit "teile besser 
durch 128" eben einfach nicht uneingeschränkt stimmt, sondern nur für 
das Binärsystem gilt.

Immerhin ist bislang völlig unklar, um welchen Assembler sich die Frage 
vom TO Thomas S. dreht...

von Pandur S. (jetztnicht)


Bewertung
1 lesenswert
nicht lesenswert
Akzeptiert. Ich ging in meiner Limitiertheit von einer Binaeruebermacht 
in dieser Technologie aus.

von c-hater (Gast)


Bewertung
1 lesenswert
nicht lesenswert
2⁵ schrieb:

> Der 6502 konnte in BCD rechnen

Nicht wirklich. Er bietet nur die Unterstützung, um grundlegendste 
Operationen (Addition und Subtraktion) zumindest einigermaßen effizient 
hinzubekommen.

Das tun allerdings fast alle µC und µP in irgendeiner Form. Allen 
gemeinsam ist: die BCD-Rechnerei ist weit weniger effizient als die 
native Rechnerei in pure binary.

Sinnvoll ist der Einsatz von BCD-Arithmetik eigentlich nur dann, wenn 
Eingabe und Ausgabe Dezimal sein sollen (sprich: taschenrechnerartige 
Anwendungen). Das schließt die "Finanzmathematik" vollständig ein...

von (prx) A. K. (prx)


Bewertung
1 lesenswert
nicht lesenswert
c-hater schrieb:
> Das schließt die "Finanzmathematik" vollständig ein...

Was spricht eigentlich dagegen, beispielsweise mit der üblichen binären 
Rechenweise in Cent statt Euros zu rechnen? Abgesehen von der 
Performance, aber schneller als BCD ist man auf 32/64-Bittern damit 
sicher.

: Bearbeitet durch User
von c-hater (Gast)


Bewertung
2 lesenswert
nicht lesenswert
(prx) A. K. schrieb:

> Was spricht eigentlich dagegen, beispielsweise mit der üblichen binären
> Rechenweise in Cent statt Euros zu rechnen?

Weil z.B. (wirklich nur fiktives Beispiel) ein 1µF X7 0805 Kondensator 
bei Mouser 1,12 Cent kosten kann.

von (prx) A. K. (prx)


Bewertung
1 lesenswert
nicht lesenswert
Gibts auch Preise wie 1,23456¢, oder hört das irgendwo auf?

von oerks (Gast)


Bewertung
0 lesenswert
nicht lesenswert
> 1,23456¢

Eher 0,00456¢.

Ich rechne auch gerne mit 27 oder 18 bit FP-Zahlen.
Das nutzt die Multiplizierer/DSP/RAM von FPGA besonders gut aus.

BCD ist was fuer BWLer!

von Wolfgang (Gast)


Bewertung
1 lesenswert
nicht lesenswert
(prx) A. K. schrieb:
> Gibts auch Preise wie 1,23456¢, oder hört das irgendwo auf?

Solche Zahlen entstehen schon, wenn der USD Preis noch EUR umgerechnet 
wird. Der offizielle Umrechnungsfaktor hat 5 gültige Stellen und wenn 
die BWLer sich nicht trauen zu runden, weil dann die Buchführung nicht 
stimmt, kommt soetwas raus.

von Carl D. (jcw2)


Bewertung
1 lesenswert
nicht lesenswert
Wolfgang schrieb:
> (prx) A. K. schrieb:
>> Gibts auch Preise wie 1,23456¢, oder hört das irgendwo auf?
>
> Solche Zahlen entstehen schon, wenn der USD Preis noch EUR umgerechnet
> wird. Der offizielle Umrechnungsfaktor hat 5 gültige Stellen und wenn
> die BWLer sich nicht trauen zu runden, weil dann die Buchführung nicht
> stimmt, kommt soetwas raus.

Der BWLer hat dafür das Konto "Rundungsdifferenzen".

von Thomas S. (thomas_s860)


Bewertung
0 lesenswert
nicht lesenswert
Ahhhhhhhh, jetzt ist der Groschen gefallen. OK. Angenommen ich möchte 
etwas mit dem ADC experementieren, Spannungen und Strom messen. Erste 
grundsätzliche Frage: Würdet ihr mir Oversampling auf z.B 32 Bit 
empfehlen? Und wieviel Bit für die Festkommazahl würdet ihr mir 
empfehlen?

von Carl D. (jcw2)


Bewertung
0 lesenswert
nicht lesenswert
Thomas S. schrieb:
> Ahhhhhhhh, jetzt ist der Groschen gefallen. OK. Angenommen ich möchte
> etwas mit dem ADC experementieren, Spannungen und Strom messen. Erste
> grundsätzliche Frage: Würdet ihr mir Oversampling auf z.B 32 Bit
> empfehlen? Und wieviel Bit für die Festkommazahl würdet ihr mir
> empfehlen?

Oversampling bedeutet 4fach abtasten, um daraus ein weiteres Bit zu 
mitteln. Wenn du damit von 10 auf 32 Bit kommen willst und 10μs 
Wandlungszeit annimmst (100k/s), dann dauert die Messung 55Jahre. Dafür 
wäre ich schon zu alt.
Oversampling benutzt man für 2..3 zusätzliche Bits, aber nicht 22. Mal 
ganz abgesehen von der Präzision eines Analogfrontends für 32-Bit. Das 
müssten einen Störabstand von 190dB haben. Sollte ein ADC 0..5V messen, 
dann wäre das unterste Bit ~1nV.

von Thomas S. (thomas_s860)


Bewertung
0 lesenswert
nicht lesenswert
Mist, da ist mir ein kleiner Fehler unterlaufen den ich auch nach 
mehrmaligen durchlesen nicht gesehen habe. Ich wollte 12 Bit schreiben 
nicht 32. Entschuldigt bitte diesen kleinen Fehler

von Carl D. (jcw2)


Bewertung
0 lesenswert
nicht lesenswert
Thomas S. schrieb:
> Mist, da ist mir ein kleiner Fehler unterlaufen den ich auch nach
> mehrmaligen durchlesen nicht gesehen habe. Ich wollte 12 Bit schreiben
> nicht 32. Entschuldigt bitte diesen kleinen Fehler

Ok, 16fach macht die 2 fehlenden Bits.  ;-)

von Thomas S. (thomas_s860)


Bewertung
0 lesenswert
nicht lesenswert
OK. Mit 12 Bits habe ich 4096 Werte die verarbeitet werden können. Wie 
sollte dann die Festkommazahl aussehen? So Bitweise

von c-hater (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Thomas S. schrieb:

> OK. Mit 12 Bits habe ich 4096 Werte die verarbeitet werden können. Wie
> sollte dann die Festkommazahl aussehen? So Bitweise

Na, das kommt natürlich darauf an, was mit dem Wert getan werden soll.

von Thomas S. (thomas_s860)


Bewertung
0 lesenswert
nicht lesenswert
Ok, als erstes sollen die Werte angezeigt werden und uu noch für weitere 
Berechnungen herangezogen bzw abgespeichert werden. Zur Anzeige würden 2 
Nachkommastellen wsl optimal sein. Für abspeichern sollten es schon 4 
Nachkommastellen sein, denke ich.

von Wolfgang (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Thomas S. schrieb:
> Ok, als erstes sollen die Werte angezeigt werden und uu noch für weitere
> Berechnungen herangezogen bzw abgespeichert werden. Zur Anzeige würden 2
> Nachkommastellen wsl optimal sein. Für abspeichern sollten es schon 4
> Nachkommastellen sein, denke ich.

Dein Rechner verwendet keine Dezimalzahlen.
Meinst du mit Nachkommastellen die Nachkommastellen von Zahlen im Dual- 
oder im Dezimalsystem?
Vier Nachkommastellen im Dezimalsystem würde etwa 13 Nachkommastellen im 
Dualsystem entsprechen. In welchem Wertebereich liegen deine Zahlen?

von (prx) A. K. (prx)


Bewertung
1 lesenswert
nicht lesenswert
Wolfgang schrieb:
> Vier Nachkommastellen im Dezimalsystem würde etwa 13 Nachkommastellen im
> Dualsystem entsprechen

Fast. Wenn man das ernst meint, ist Aufrunden angesagt.

von Stefan ⛄ F. (stefanus)


Bewertung
3 lesenswert
nicht lesenswert
Bevor du eine ganze Mathe Bibliothek in Assembler nachbildest, erwäge 
nochmal auf den Verzicht von Fließkommazahlen.

Denn statt 1,48€ kann man auch mit 148 Cent rechnen. Statt 1,5 Volt kann 
man mit 1500mV rechnen.

Das Komma ist dann nur noch eine Frage der Darstellung.

von Dietrich L. (dietrichl)


Bewertung
1 lesenswert
nicht lesenswert
Carl D. schrieb:
> Ok, 16fach macht die 2 fehlenden Bits.  ;-)

Oversampling funkioniert aber nur, wenn genügend Rauschen im Signal ist. 
Ist das Signal absolut sauber, gibt es im Ergebnis nur 2-Bit-Sprünge.

von Wolfgang (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Stefan ⛄ F. schrieb:
> Bevor du eine ganze Mathe Bibliothek in Assembler nachbildest, erwäge
> nochmal auf den Verzicht von Fließkommazahlen.

Es geht nicht um Fließkommazahlen, sondern um Festkommazahlen. Das 
bedeutet Ganzzahlrechnung und einen eingeschobenen Dezimalpunkt alleine 
bei der Ausgabe

von S. R. (svenska)


Bewertung
1 lesenswert
nicht lesenswert
Pandur S. schrieb:
> Speziell rechne ich nicht in Messwert Einheiten, sondern in ADC
> Einheiten. Eine Temperatur rechnet nicht in Celsius, oder aehnlich,
> sondern der Sollwert wird zu ACD Wert skaliert.

Gibt es dafür einen Grund? Ich kann mir irgendwie vorstellen, dass man 
Regelalgorithmen besser auf den physikalischen Einheiten (auch passend 
skaliert) entwickeln kann...?

von Wolfgang (Gast)


Bewertung
1 lesenswert
nicht lesenswert
S. R. schrieb:
> Ich kann mir irgendwie vorstellen, dass man
> Regelalgorithmen besser auf den physikalischen Einheiten (auch passend
> skaliert) entwickeln kann...?

Der Regelalgorithmus ist unabhängig von den Einheiten.
Alles was sich ändert, sind Skalierungskonstanten.

Wenn man mit Rechenzeit um sich schmeißen kann, ist das egal. Dann kann 
man sich aber auch die Umsetzung in Assembler sparen.

von Rolf M. (rmagnus)


Bewertung
1 lesenswert
nicht lesenswert
Wolfgang schrieb:
> (prx) A. K. schrieb:
>> Gibts auch Preise wie 1,23456¢, oder hört das irgendwo auf?
>
> Solche Zahlen entstehen schon, wenn der USD Preis noch EUR umgerechnet
> wird.

Oder wenn man davon:

c-hater schrieb:
> Weil z.B. (wirklich nur fiktives Beispiel) ein 1µF X7 0805 Kondensator
> bei Mouser 1,12 Cent kosten kann.

die Merwertsteuer ausrechnen will.

Carl D. schrieb:
> Der BWLer hat dafür das Konto "Rundungsdifferenzen".

Das hat sich schon in Superman III einer zunutze gemacht.

S. R. schrieb:
> Pandur S. schrieb:
>> Speziell rechne ich nicht in Messwert Einheiten, sondern in ADC
>> Einheiten. Eine Temperatur rechnet nicht in Celsius, oder aehnlich,
>> sondern der Sollwert wird zu ACD Wert skaliert.
>
> Gibt es dafür einen Grund?

Ja, um den Wertebereich voll auszunutzen.

> Ich kann mir irgendwie vorstellen, dass man Regelalgorithmen besser auf
> den physikalischen Einheiten (auch passend skaliert) entwickeln kann...?

Was meinst du mit "passend skaliert"? Das ist ja genau das, was gemacht 
wird.

von S. R. (svenska)


Bewertung
1 lesenswert
nicht lesenswert
Rolf M. schrieb:
>> Ich kann mir irgendwie vorstellen, dass man Regelalgorithmen besser auf
>> den physikalischen Einheiten (auch passend skaliert) entwickeln kann...?
>
> Was meinst du mit "passend skaliert"?
> Das ist ja genau das, was gemacht wird.

Beispielsweise mit mV oder kV statt Volt, wenn's besser passt. Aber 
trotzdem physikalisch.

von Teo (Gast)


Bewertung
0 lesenswert
nicht lesenswert
S. R. schrieb:
> Beispielsweise mit mV oder kV statt Volt, wenn's besser passt. Aber
> trotzdem physikalisch.

ADCV.... :)


PS: Kauft euch doch nen µC mit "Komma-Marker" ;D

von Rolf M. (rmagnus)


Bewertung
1 lesenswert
nicht lesenswert
S. R. schrieb:
> Rolf M. schrieb:
>>> Ich kann mir irgendwie vorstellen, dass man Regelalgorithmen besser auf
>>> den physikalischen Einheiten (auch passend skaliert) entwickeln kann...?
>>
>> Was meinst du mit "passend skaliert"?
>> Das ist ja genau das, was gemacht wird.
>
> Beispielsweise mit mV oder kV statt Volt, wenn's besser passt. Aber
> trotzdem physikalisch.

Du kannst auch einfach die Einheit "Svenska" erfinden, und ein Svenska 
ist 4,8828125 Millivolt und passt zufällig perfekt auf den Zahlenbereich 
des ADCs. Dann hast du auch eine physikalische Einheit. ;-)

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


Bewertung
1 lesenswert
nicht lesenswert
Na wenn das so ist... :-)

von Rainer V. (a_zip)


Bewertung
0 lesenswert
nicht lesenswert
Wolfgang schrieb:
> Es geht nicht um Fließkommazahlen, sondern um Festkommazahlen.

Nachdem wir nun festgestellt haben, dass der TO sich entweder völlig 
unglücklich ausgedrückt hat oder auch nur keine Ahnung hat, ist doch 
alles gesagt, was zu sagen ist! Wen interessiert es da noch, dass jemand 
mit einem 12-Bit-AD-Wandler ausgerechnet mit 4096 rechnet :-)
Gruß Rainer

von Peter (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
@Rainer V.
Du hast mich voll durchschaut, ich habe keine Ahnung von 
Festkommazahlen. Darum wende ich mich an Euch.

Könten wir ein Beispiel machen? z.B. ich habe vom ADC den Wert 1834 
bekommen. Wie würde der in in Festkommaarithmetik aussehen?

von c-hater (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Peter schrieb:

> Könten wir ein Beispiel machen? z.B. ich habe vom ADC den Wert 1834
> bekommen. Wie würde der in in Festkommaarithmetik aussehen?

Naja, in einer 16Bit-Variablen

1834 dec oder
072A hex oder
0000011100101010 bin

Kommt drauf an, wie du dir das anzeigen läßt. All das ist aber auch 
eine Festkommazahl (mit 0 Nachkommastellen).

Wenn aber jetzt die Aufgabe wären, die Hälfte davon zu berechnen, dann 
kannst du das ganz einfach tun und dabei 0 Rechenzeit verbrauchen. Du 
setzt einfach gedanklich das Komma in der Binärdarstellung eine Stellen 
nach links und erhältst:

000001110010101.0

Im Speicher steht nach wie vor dieselbe Zahl, du legst nur für dich (und 
dein Programm) fest, dass sie anders zu interpretieren ist. That's the 
main trick...

von Axel S. (a-za-z0-9)


Bewertung
0 lesenswert
nicht lesenswert
Peter schrieb:
> @Rainer V.
> Du hast mich voll durchschaut, ich habe keine Ahnung von
> Festkommazahlen. Darum wende ich mich an Euch.

Dann mach einen eigenen Thread auf, statt den hier zu kapern.

> Könten wir ein Beispiel machen? z.B. ich habe vom ADC den Wert 1834
> bekommen. Wie würde der in in Festkommaarithmetik aussehen?

Genauso. Festkomma-Arithmetik ist eine Art die Daten zu 
interpretieren. Und es gibt nicht nur eine, sondern beliebig viele.

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.