martes, 5 de febrero de 2013

Binary Coded Decimal (BCD)

La computadora por sí sola maneja sólo números binarios (o bien estados lógicos). Podemos sumar, restar, multiplicar y dividir (en asm intel: add, sub, mul/imul, div/idiv) , entre otras cosas, siempre en formato binario .

Ahora bien, nosotros tenemos números binarios para generar valores; ¿y que tal si con el formato binario simulásemos el sistema decimal?

La respuesta a esa pregunta es el tema de este post: El sistema decimal codificado en binario o mejor conocido como BCD.

En el BCD nosotros tenemos NO una palabra (word, tamaño de máquina) para generar un número sino sólo un cuarteto de bits (un nibble) los cuales representan cada uno a una cifra del número decimal que estaríamos simulando.

Ahora bien, con un cuarteto ¿cuales son los posibles valores que podríamos generar?

0000 -> 0
0001 -> 1
0010 -> 2
0011 -> 3
0100 -> 4
0101 -> 5
0110 -> 6
0111 -> 7
1000 -> 8
1001 -> 9
1010 -> 10
1011 -> 11
1100 -> 12
1101 -> 13
1110 -> 14
1111 -> 15

Podríamos generar hasta el número 0xF lo cual a simple vista determinamos que con un cuarteto de bits nos basta y sobra para simular una cifra que va del 0 al 9.

Al manejar BCD nos podemos encontrar con desbordes tanto de la cadena de 4 bits (puede que un resultado dé 5 bits) o bien que nos pasemos del máximo de la base 10 la cual estaríamos simulando. En ambos casos, al resultado de la suma se le sumaría un 6 (0110) y el desborde pasa al próximo número (idéntico a la suma en base 10).

Probemos entonces el funcionamiento de bcd:

imagínense la siguiente suma:

49
56
-----
105

ahora codificada en bcd

0100  1001
0101  0110
--------------------
          1111
1° 1+0 = 1 y en todos los demás bits la suma da 1. A simple vista podemos ver que el resultado será 1111 número que no existe en el sistema decimal como único. En este caso a ese resultado, como mencioné anteriormente, se le sumaría un 6 y el desborde pasa al siguiente número.
      1
0100  1001
0101  0110
--------------------
          1111
       +0110
         ---------
           0101


Sigamos entonces con la operación:
      1
0100  1001
0101  0110
--------------------
          1111
       +0110
         ---------
1010  0101

Luego el resultado al pasarlo a binario quedaría:
(8+2)--(4+1) = 105

Lo bueno del bcd es que es fácilmente comprobable si lo hacemos a mano, ya que desde la primaria sabemos sumar y es esta operación la que nos permitiría conocer la verdad sobre la suma en decimal codificado en binario.

0 comentarios:

Publicar un comentario

Dejanos tu comentario

 
Web Analytics