FLOAT

BASIC2006

FLOAT ist ein 32-Bit Datentyp für die Darstellen von Gleitkommazahlen auf der C-Control I Advanced.

Die Funktion FLOAT() dient zur Konvertierung eines 16-Bit Ausdrucks (vgl. Typecasts) in eine Gleitkommazahl.

Die C-Control I ADVANCED basiert auf dem Betriebssystem 2.05 einer herkömmlichen Unit M 2.0, hat aber ein 32 Bit Floating Point Module im Betriebssystem und einen erweiterten BASIC Programmspeicher (22kB) sowie einen größeren Variablenspeicher.

Ergänzungen in der Library:

Nicht alle Funktionen der Gleitkommaarithmetik sind auf Betriebssystem- Ebene installiert. Ein Teil davon, wie z.B. der LN (der natürliche Logarithmus) sind als Library auf BASIC Ebene installiert, da hier oft die Rechengenauigkeit gegen die Rechenzeit abgewogen wird. Gleiches gilt für die Eingaberoutine von Gleitkommazahlen über Tastatur. Auch hier hat der Anwender die Möglichkeit diese Funktionen seinen individuellen Bedürfnissen anzupassen.

Einschränkungen:

Die Implementierung eine Gleitkommaarithmetik auf einer so kleinen Maschine, wie es die C-Control ist erfordert zwar bei der Funktionalität keine Einschränkungen, wohl aber bei der Programmierung selbst.

Gemeint sind hier z.B. grundsätzliche Überlegung bei der Programmierung von Termen hinsichtlich des Stack-Bedarfes dieser Ausdrücke. Das gilt auch allgemein bei der Mischung verschiedener Datentypen, die oftmals schon vom Compiler oder im Betriebssystem umgewandelt werden (ohne dass der Programmierer das merkt), was in anderen Umgebungen komplikationslos ist. Das ist hier nicht möglich und der Programmierer ist selbst dafür verantwortlich die gegebenen Rahmenbedingungen sorgfältig einzuhalten.

Der Compiler gibt hier keine Hinweise bzw. Fehlermeldungen. Der Anwender muss selbst darauf achten. Die Folgen solcher Fehler sind in der Regel unerklärlich falsche Rechenergebnisse und auch Programmabstürze als Folge von Stackfehlern.

Der 32 Bit Datentyp, welcher Gleitkommazahlen speichern kann, ist der Datentyp Float.

Details zum Datentyp FLOAT:

Während die C-Control bislang mit den, auch von Laien zu überschauenden Datentypen Byte und Word ausgekommen ist, erfordert die Darstellung einer Gleitkommazahl einen weiteren Datentyp Float. Dieser Datentyp besteht aus einem Byte Exponent und 3 Byte Mantisse mit Vorzeichern, also 32Bit.

Für die interne Darstellung einer Gleitkommazahl gilt folgende Spezifikation:

  1. Bias $80
  2. Normiert -> Mantissa MSB immer 1
  3. Darstellund der Mantissen mit "Mantissa hidden sign bit"

Die Darstellung mit Mantissa hidden sign bit ist leicht verständlich wenn man sich die Darstellung der Zahl +pi und -pi ansieht:

 +pi =     3.1415927  82 49 0F DB
 -pi =    -3.1415927  82 C9 0F DB

Das MSBit im 2.Byte (49 u. C9) ist Vorzeichen der Mantisse. Weil wegen der Normierung das MSB immer als 1 angenommen wird, kann man es als Vorzeichen verwenden.

  • 49 0F DB ist positiv (MSBit =0) die FP-Routine macht dann daraus C9 0F DB und setzt intern ein Positiv-Flag.
  • C9 0F DB ist negativ (MSBit =1) die FP-Routine belässt es bei C9 0F DB und setzt intern ein Negativ-Flag.

Wertebereich:

Der Wertebereich der mit dieser FP-Arithmetik verarbeitet werden kann, liegt im Bereich 1 × 10±38.

Genauigkeit:

Sie werden feststellen dass sich selbst mit einer 32 Bit FP-Arithmetik simple Zahlen nicht exakt darstellen lassen. So lässt sich z.B. die Zahl 1234 im Rahmen dieser 32Bit nur als 1233.999 darstellen, was aber wie bereits gesagt an der endlichen Genauigkeit der 32Bit Darstellung liegt.

Floating Point-Befehlsübersicht

Neben den Grundrechenarten und Standardbefehlen, welche mit anderen Datentypen verwendet werden, stehen folgende Befehle für die Gleitkomma- Verarbeitung zur Verfügung.

  • ABS: Rückgabe absoluter Wert
  • SQRT: Quadratwurzel-Funktion
  • EXP: Wissenschaftliche Notation
  • COS: Cosinus-Funktion
  • SIN: Sinus-Funktion
  • FLOAT(): Konvertierung (als Funktion)
  • FPPRINT: Formatierte Ausgabe
  • INT: Konvertierung

Weiter findet man in der Bibliothek zur C-Control Advanced weitere nützliche Funktionen wie:

  • LN: Natürlicher Logarithmus
  • LOG: Logarithmus-Funktion
  • TAN: Tangens-Funktion
  • GET_FPVALUE: Eingabe einer FP-Variablen von Tastatur
  • PUTFLOAT: Datenspeicherung von Float-Variablen im Flash
  • GETFLOAT: Float-Variablen aus dem Flash lesen

Siehe auch: Vordefinierte Konstanten, Typecasts

© 2004 - 2012 tappertzhofen. Alle Reche vorbehalten.
Seitenanfang | Impressum