Die exakten Werte liegen

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.

CCOM - CBM 4032 Benutzerhandbuch

I. DATEN - INTERPRETER - CODES

1. Datenarten

1.1 Einführung

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

1.7 E 38 und 2.94 E -39