bei 2 h +127 = 1.70141183 E +38
und 2 h -128 = 2.93873594 E -39
('h' steht für 'Pfeil nach oben', lies 'hoch')
Wird der absolute Betrag überschritten, wird OVERFLOW ERROR gemeldet, wird er unterschritten,
erfolgt keine Fehlermeldung, aber das Ergebnis ist Null.
WERT größer als 1.7 E +38 oder WERT kleiner als -1.7 E +38
ergibt OVERFLOW ERROR
WERT kleiner als 2.9 E -39 oder WERT größer als -2.9 E -39
ergibt 0
Die Mantisse wird mit einer Genauigkeit von 9 Dezimalstellen verarbeitet und gespeichert.
(Exakt kann die Mantisse +/- 2 exp 32 = 4294967296 Möglichkeiten darstellen, das sind fast 9.5 Dezimalstellen.)
Positive Vorzeichen müssen nicht geschrieben werden und werden nicht ausgegeben. Der Exponent kann entfallen,
wenn man Zahlen hat, die sich durch 9 Stellen darstellen lassen. Wann bei der Ausgabe von der Darstellung
ohne Exponent in die normalisierte Exponentialdarstellung (scientific notation) übergegangen wird, ist bei
PRINT beschrieben. Mögliche Eingabeformate sind bei INPUT bzw. STR$ beschrieben.
Das 'E' für Exponent muß immer ohne SHIFT getippt werden, unabhängig davon, ob dann ein großes oder kleines
E auf dem Bildschirm steht.
Beachten Sie bitte, dass der Punkt in 1.234 nicht versehentlich zu einem Komma wird, ein SYNTAX
ERROR bzw. EXTRA IGNORED wäre die Folge.
Alle Zwischenergebnisse in arithmetischen und mathematischen Ausdrücken werden intern im
Gleitkommaformat ausgedrückt, unabhängig davon, ob das Ergebnis vielleicht einen Integer- oder
Bytewert darstellen muß!
Intern wird eine Gleitkommazahl in 5 Bytes dargestellt, wobei 1 Byte den Exponenten und 4 Bytes die
Mantisse enthalten.
1.2.2 Integer (ganze Zahl)
Der Integerbereich ist definiert von
-32767 bis +32767
In einer Integerzahl kann kein Punkt vorkommen, weil nur ganze Zahlen zugelassen sind.
Wird der Integerbereich über- oder unterschritten, so wird ILLEGAL QUANTITY ERROR gemeldet.
Dagegen wird kein Fehler gemeldet, falls das Ergebnis eines Ausdrucks Nachkommastellen enthält:
Zahlen mit Nachkommastellen werden in die nächstkleinere Zahl umgewandelt. Bei positiven Zahlen
ist dies gleichbedeutend mit dem Abschneiden des Nachkommateils, bei negativen bedeutet es
betragsmäßig aufrunden!
123.456 ergibt 123
-123.456 ergibt -124
Intern wird eine Integerzahl in 2 Bytes dargestellt, die in der Reihenfolge HIGH, LOW
abgespeichert sind: WERT = 256*HIGH + LOW
1.2.3 Bytezahl
In vielen BASIC-Befehlen kommen Parameter vor, die nur die ganzzahligen Werte von
0 bis 255
annehmen dürfen. Wir bezeichnen sie als Byte-Werte, weil durch ein Byte genau dieser
Wertebereich dargestellt werden kann.
Auch hier ist ILLEGAL QUANTITY ERROR die Folge, wenn negative Zahlen oder Zahlen größer als
255 verwendet werden. Etwaige Nachkommastellen werden abgeschnitten.
1.2.4 Logische Daten
Das Ergebnis von logischen Ausdrücken wird als wahr oder falsch bezeichnet,
kann also nur zwei verschiedene Werte annehmen. Im Gegensatz zu anderen Sprachen wird in
BASIC falsch als 0 und wahr als -1 dargestellt. Die Darstellung logischer
Werte erfolgt also durch Zahlenwerte!
Während das Ergebnis von logischen Ausdrücken nur die beiden Werte 0 und -1 annehmen kann, bedeutet
für IF THEN nur der Wert 0 falsch und jeder andere Wert wahr.
1.2.5 Adressdaten
Bei den Befehlen PEEK, POKE, SYS, USR und WAIT müssen absolute Maschinenadressen angegeben
werden. Diese 16-Bit-Adressen können Werte annehmen zwischen
0 und 65535 (2 h 16 - 1)
Verläßt man diesen Bereich, so wird ILLEGAL QUANTITY ERROR gemeldet.
1.2.6 BASIC-Zeilennummern
BASIC Zeilennummern können ganze Zahlen sein zwischen
0 und 63999
Versucht man eine größere Zeilennummer als 63999 oder eine negative einzugeben,
wird SYNTAX ERROR gemeldet!
Ein wesentlicher Unterschied zwischen BASIC Zeilennummern und den fünf vorher
besprochenen Zahlenarten ist zu beachten:
BASIC-Zeilennummern können nicht durch arithmetische Ausdrücke berechnet werden und
auch nicht in Variablen stehen. Sie müssen in den entsprechenden BASICBefehlen also
immer als Konstante angegeben werden.
1.3 Strings
Ein String ist wörtlich übersetzt eine (Zeichen-) Kette. Ein String kann beliebige
alphanumerische Zeichen enthalten. Meistens handelt es sich dabei um Text. Allgemeiner
formuliert handelt es sich um druckbare Zeichen (-Codes). Allerdings kann der Inhalt
einer Stringvariablen auch wesentlich allgemeiner definiert werden, nämlich als Bytefeld,
in dem jedes Byte z.B. einen Dezimalwert von 0 bis 255 repräsentieren kann.
Ein sehr wichtiger Unterschied zwischen String- und Zahlendaten ist, dass der Computer
den 'Sinn' eines Strings nicht verstehen kann, während er ja den Zahlenwert von Zahlen
'versteht', also damit rechnen kann.
Strings und Zahlen sind also grundverschiedene Datentypen, die nicht verwechselt werden
dürfen. Passiert es doch, wird TYPE MISMATCH ERROR gemeldet.
Da Ihr Computer nicht nur rechnen, was 'to compute' eigentlich bedeutet, sondern auch nichtnumerische
Zeichenfolgen behandeln kann, unterscheidet er zwischen zwei grundverschiedenen Datenarten, nämlich
zwischen numerischen und nichtnumerischen Daten.
- numerische Daten:
Numerische Daten sind ganz einfach Zahlen. Ihr Computer kann mit Zahlen rechnen, also alle arithmetischen
und mathematischen Funktionen und Verknüpfungen damit durchführen.
- nichtnumerische Daten:
Dies sind Zeichenfolgen, die für den Computer keinerlei Bedeutung haben, die er aber aufgrund Ihrer
Anweisungen zerteilen oder zusammensetzen kann. Diese Zeichenfolgen ('Strings') werden oft nicht
ganz exakt als 'Text' bezeichnet, obwohl sie wesentlich mehr enthalten können, als Text.
Zusätzlich zur Datenart ist eine Unterscheidung nötig, wie die Daten dargestellt werden, bzw. wo sie stehen.
Hier sind Konstante und Variablen zu trennen.
Die einfachste Form sind Konstante. Sowohl Zahlen als auch Strings können als Konstante direkt im
Programmtext auftreten.
Was dem Computer aber erst seine Leistungsfähigkeit gibt, sind Variable. Variable sind Namen
von Speicherplätzen, in denen Zahlen oder Strings stehen können.
Nach dieser kurzen Einführung werden im folgenden alle verwendeten Datenarten und Darstellungsformen
definiert und erläutert.
1.2 Numerische Daten
Ihr CBM unterscheidet sechs verschiedene numerische Datenarten, von denen fünf in jeder Form im
Programm verwendet werden können.
1.2.1 Gleitkomma-Zahlen
Die Gleitkommadarstellung ist die mächtigste Zahlenart, da sie alle anderen drei Formen
numerischer Daten als Sonderfälle enthält. In der allgemeinsten Form besteht eine
Gleitkommazahl aus der Mantisse mit ihrem Vorzeichen und aus dem Exponenten zur Basis 10
mit seinem Vorzeichen.
Beispiel
-1.2345 E -3
=
-0.0012345
1.2345 E 3
=
1234.5
.057
=
0.057
125.03
=
125.03
-3
=
-3
Der darstellbare Zahlenbereich liegt für den absoluten Betrag der Zahl zwischen