Aufbau BCD-Wert gepackt
Ein gepackter BCD-Wert ist nichts weiter als eine Gruppe von Nibbles (4-Bit-Gruppe), wobei jedes Nibble eine Dezimalstelle repräsentiert. Jedes Nibble kann als BCD einen Wert von 0 bis 9 annehmen. Gepackt bedeutet hierbei, dass zur Speicherung des Wertes 0-9 kein ganzes Byte verwendet wird, sondern nur 4 Bits (1 Nibble) wovon 2 in ein Byte passen (8 Bits).
16 Bit (4 Nibbles, 1 Nibble = 4 Bit) | |||
---|---|---|---|
HighByte | LowByte | ||
Bits 15-12 | Bits 11-8 | Bits 7-4 | Bits 3-0 |
Tausender | Hunderter | Zehner | Einer |
8 Bit (2 Nibbles, 1 Nibble = 4 Bit) | |
---|---|
Bits 7-4 | Bits 3-0 |
Zehner | Einer |
Ausmaskieren der einzelnen Nibbles/Dezimalstellen
dim a as word dim einer,zehner,hunderter,tausender as byte a=BcdEnc(1234) einer = a and 0x000f zehner = (a and 0x00f0) >> 4 hunderter = (a and 0x0f00) >> 8 tausender = (a and 0xf000) >> 12
Umwandlung in lesbare Zahl
Einen BCD-Wert kann man recht simpel in eine lesbare Zahl umwandeln. Hierfür holt man sich das entsprechende Nibble und addiert den Wert mit dem ASCII-Wert des Zeichens „0“ (48).