Integer

Aus C64-Wiki
(Weitergeleitet von Ganzzahl)
Zur Navigation springenZur Suche springen

Grundsätzlich wird mit Integer eine ganze Zahl (keine Nachkommastellen) bzw. die Klasse der ganzen Zahlen bezeichnet. In der Informationsverarbeitung stehen dazu die Fließkomma- und Fixkommazahlen im Gegensatz.

Der Wertebereich von Integer-Zahlen hängt davon ab, ob Vorzeichen verwendet werden. Auf dem C64 sind folgende Integer-Typen gängig:

  • Byte ohne Vorzeichen (0 .. 255, 8 Bit)
  • Byte mit Vorzeichen (-128 .. 127, 8 Bit: 7 Bit plus ein Vorzeichen-Bit)
  • Word ohne Vorzeichen (0 .. 65535, 16 Bit)
  • Word mit Vorzeichen (-32768 .. 32767, 16 Bit: 15 Bit plus ein Vorzeichen-Bit)

Integer-Zahlen beim C64[Bearbeiten | Quelltext bearbeiten]

CPU-Ebene[Bearbeiten | Quelltext bearbeiten]

Die ALU (arithmetisch-logische Einheit oder Rechenwerk) der CPU MOS 6510 des C64 arbeitet fast ausschließlich mit 8-Bit-Ganzzahlen (Byte) entsprechend ihrer Register- bzw. Datenbusbreite. Vorzeichenbehaftete Integer-Zahlen benutzt der Rechner z.B. bei relativen bedingten Sprüngen (BNE, BEQ usw.). Integer in Word-Breite werden zur Darstellung von absoluten Adressen und innerhalb (weniger) Register wie dem Programmzähler verwendet. Rechenoperationen auf 16-Bit-Zahlen müssen aus einzelnen 8-Bit-Operationen zusammengesetzt werden. Fließkommazahlen sind der CPU unbekannt.

BASIC-Interpreter-Ebene[Bearbeiten | Quelltext bearbeiten]

Auf der Ebene des BASIC-Interpreters wird für alle Integer-Zahlen die Word-Breite (16 Bit) genutzt. BASIC-Variablen vom Typ Integer müssen als Typkennung das Prozentzeichen (%) im Namen führen. Für den Umgang mit Integer-Zahlen stellt der Interpreter verschiedene Funktionen und Befehle zur Verfügung: INT, ABS, SGN, VAL sowie die Grundrechenarten und diverse logische Operatoren wie AND, OR und NOT. Während die arithmetischen Funktionen grundsätzlich mit Fließkommawerten arbeiten, sind die logischen Operationen bereits intern auf den Integer-Wertebereich eingeschränkt.

Den Vorteil des geringeren Platzverbrauchs gegenüber von Fließkommazahlen (zwei statt fünf Bytes Speicherbedarf pro Wert) bieten Integer-Variablen beim BASIC des C64 nur im Falle von Arrays. Wer in einem Programm mit sehr vielen Zahlen nur Integer-Berechnungen anstellen muss, sollte dazu Integer-Arrays verwenden.

Nachteil: Der BASIC-Interpreter verwendet der C64 keine auf Integer optimierte Arithmetik, sondern führt alle Berechnungen über den Umweg einer Konvertierung zur Fließkommadarstellung durch, sodass die Auswertung von Integer-Ausdrücken unerwarteterweise sogar etwas mehr Zeit verschlingt als die eines Fließkommaausdrucks. Konkret können ca. 380 Additionen von Fließkommavariablen pro Sekunde ausgeführt werden, jedoch nur ca. 320 Additionen von Integer-Variablen pro Sekunde.
Als Vergleich: In Assembler schafft der C64 (inklusive Holen und Speichern der Werte) ca. 40.000 Additionen von 16-Bit-Integer-Werten pro Sekunde.

In manchen Befehlen (z.B. FOR) ist die Nutzung von Integer-Variablen nicht direkt möglich.

Im Zusammenhang mit BASIC-Compilern kann die Nutzung von Integer-Variablen deutliche Vorteile bringen, da die meisten Compiler den Datentyp Integer anders als BASIC V2 direkt unterstützen, ohne den Umweg über Fließkommazahlen zu gehen. Der von den Compilern generierte Code kann entsprechend kleiner und schneller werden als der entsprechende Fließkomma-Code.

Weblinks[Bearbeiten | Quelltext bearbeiten]

WP-W11.png Wikipedia: Integer
WP-W11.png Wikipedia: ALU