Nächste Seite: Gleitkommazahlen Aufwärts: Charakteristik verschiedener Typen Vorherige Seite: Charakteristik verschiedener Typen

### Ganze Zahlen

Da die Prozessoren der M68000-Familie eine Registerbreite von 32 Bit haben, werden auch Rechengrössen dieser Grösse angeboten. Die entsprechenden Typen heissen `LONGINT` bzw. `LONGCARD`. Der `LONGINT`-Bereich umfasst alle Zahlen im von -2147483648 () bis 2147483647 (), der `LONGCARD`-Bereich geht von 0 bis 4294967295 ().

Zudem werden auch die Typen `SHORTINT` und `SHORTCARD` angeboten, die jeweils den Wertebereich von -128 bis 127 bzw. 0 bis 255 umfassen. Variablen dieses Typs belegen folglich ein Byte im Speicher, beachten Sie allerdings auch den Unterabschnitt 5.5.7, Anordnung von Typen und Variablen.

Zahlen-Konstanten, wie zum Beispiel 0 oder -4009, haben an sich keinen bestimmten Typ. Der Compiler weiss lediglich, dass es sich um skalare Zahlen handelt. Erst wenn sie in Rechnungen gebraucht oder einer Variablen zugewiesen werden, erhalten sie einen Typ. Bei Zuweisungen wird natürlich kontrolliert, ob diese Konstante überhaupt in dieser Variablen Platz hat. In verschiedenen anderen Systemen wird eine ,,lange Zahl`` mit einem `D` hinter der Zahl gekennzeichnet, z.B. `12D` wäre die `LONGCARD`-Konstante 12. Dies ist in nicht zulässig, aber auch nicht nötig.

In diesem Zusammenhang sei eine vor allem für Numeriker wichtige Anmerkung zu den Operatoren `DIV` und `MOD` erwähnt. Die mathematische Definition des Rests und der ganzzahligen Division lautet:

Dabei muss immer gelten:

Diese Bedingungen sind bei den meisten Implementationen nicht erfüllt. So ist bei negativen Divisoren das Resultat der ganzzahligen Division grösser als der Quotient (näher bei Null) und der Rest hat das Vorzeichen des Dividends statt des Divisors. Die Operatoren `DIV` und `MOD` führen im die numerisch sauberen Operationen durch. Wird jedoch einmal die alte Definition benötigt, können die Operatoren ```/``` und `REM` verwendet werden. Der ```/`-Operator hat bei Zahlen des Typs `REAL`, `LONGREAL` oder `FFP` die gewohnte Bedeutung der Division. Um die Unterschiede deutlich vor Augen zu führen, sollen die Tabellen 5.1 und 5.2 dienen. Dabei fällt vor allem die Symmetrie bei der alten Definition auf. Die korrekte Lösung hat keine Symmetrie, ist aber kontinuierlich.

Tabelle 5.1: Operatoren `DIV` und `MOD`
i: | i `DIV 3` | i `MOD 3` | i `DIV -3` | i `MOD -3`
4: | 1 | 1 | -2 | -2
3: | 1 | 0 | -1 | 0
2: | 0 | 2 | -1 | -1
1: | 0 | 1 | -1 | -2
0: | 0 | 0 | 0 | 0
-1: | -1 | 2 | 0 | -1
-2: | -1 | 1 | 0 | -2
-3: | -1 | 0 | 1 | 0
-4: | -2 | 2 | 1 | -1

Tabelle 5.2: Operatoren `/` und `REM`
i: | i `/ 3` | i `REM 3` | i `/ -3` | i `REM -3`
4: | 1 | 1 | -1 | 1
3: | 1 | 0 | -1 | 0
2: | 0 | 2 | 0 | 2
1: | 0 | 1 | 0 | 1
0: | 0 | 0 | 0 | 0
-1: | 0 | -1 | 0 | -1
-2: | 0 | -2 | 0 | -2
-3: | -1 | 0 | 1 | 0
-4: | -1 | -1 | 1 | -1

Nächste Seite: Gleitkommazahlen Aufwärts: Charakteristik verschiedener Typen Vorherige Seite: Charakteristik verschiedener Typen