BCD – Binary Coded Decimal

Los sistemas de numeración decimal, binario y hexadecimal son conceptos matemáticos. Son formas de representar los números. Un mismo número, por ejemplo, el 37, puede representarse como 37 (decimal), %00100101 (binario), o $25 (hexadecimal). Pero el número es el mismo: 37.

Por tanto, a la hora de programar, o a la hora de referirnos al número 37, indistintamente podemos usar 37, %00100101, o $25. Ahora bien, el ordenador lo que almacena en memoria son bytes, y los bytes son paquetes de 8 bits. Por tanto, si el ordenador tiene un 37 en una posición de memoria, lo que tendrá almacenado necesariamente será 00100101, indistintamente de cómo lo representemos en los programas o cómo nos refiramos a ese número.

Lo anterior es cierto si se utiliza la codificación binaria, que es la más habitual. Pero el C64 admite una codificación alternativa llamada BCD – Binary Coded Decimal, es decir, decimal codificado en binario. Esta forma de codificación permite codificar los dígitos decimales (del 0 al 9) usando 4 bits, lo que también se llama “nibble” (un byte tiene dos nibbles). Es decir, el número 37 se codificaría como 0011 en el nibble más significativo y 0111 en el nibble menos significativo. De este modo, con un byte es posible codificar desde el decimal 0 hasta el decimal 99.

El C64 no sólo permite esta codificación, es decir, almacenar los números decimales de esta manera. También permite hacer operaciones aritméticas sobre datos que están codificados así. Esto se consigue activando el flag D del registro de estado, como se verá en entradas posteriores.

La codificación BCD también está ampliamente descrita en Internet: https://es.wikipedia.org/wiki/Decimal_codificado_en_binario.


Programa de ejemplo: Prog03

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s