Binary Coded Decimal

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

BCD (Binary Coded Decimal) ist eine Kodierung, bei pro Nibble (4 Bits) eines Bytes jeweils eine Dezimalziffer dargestellt wird. Damit fasst ein Byte genau zwei Dezimalstellen, womit ein Wertebereich von 0 bis 99 abgebildet werden kann; in zwei Bytes lassen sich Zahlen von 0 bis 9999 darstellen und so weiter.

Diese Darstellung hat einige Vorteile:

  • einfache Umrechnung von und in Zeichenketten (in Dezimaldarstellung), da keine Divisionen/Multiplikationen mit dem Faktor 10 durchgeführt werden müssen, um die einzelnen Dezimalstellen zu berechnen
  • keine Überraschungen bezüglich der Präzision und des Wertebereichs der Darstellung (z.B. lassen sich mit Fließkommazahlen viele im Dezimalsystem "glatt" erscheinende Brüche nicht verlustfrei darstellen, was sich schnell in sichtbaren Rundungsfehlern zeigt)[1]

...und einige Nachteile:

  • Speicherplatz wird nicht optimal genutzt (nur 100 von 256 möglichen Zuständen eines Bytes werden benutzt)
  • Die CPUs neuerer Rechner bieten keinen BCD-Modus, Rechnungen im BCD-Modus müssten also Schritt für Schritt per Software erfolgen, was deutlich langsamer als die nativen Rechenoperationen ist

Heutzutage wird, sofern keine beliebig großen/langen Dezimalzahlen verarbeitet werden müssen, eher Festpunktarithmetik benutzt.

Beim C64 wird die BCD-Darstellung von Zahlen intern zum Beispiel von einigen Programmen im Rechnungs- und Buchhaltungswesen genutzt. In Spielen wird sie allenfalls z.B. für die aktuelle Punktezahl des Spielers genutzt, da diese sich so sehr schnell auf den Bildschirm bringen lässt.

Die C64-CPU bzw. die 6502-Prozessorfamilie verfügt über einen speziellen Decimal Mode, in dem Additionen und Subtraktionen entsprechend dieser Kodierung durchgeführt werden. Aktiviert wird der Decimal Mode durch das Decimal-Flag im Statusregister. Siehe entsprechende Assembler-Befehle.

Fußnoten[Bearbeiten | Quelltext bearbeiten]

  1. Siehe z.B.
    0 A=4
    1 A=A+.2:PRINT A:GOTO 1

Weblinks[Bearbeiten | Quelltext bearbeiten]

WP-W11.png Wikipedia: BCD
WP-W11.png Wikipedia: BCD Sprache:english