C_Códigos Binarios - jospicant/IceStudio GitHub Wiki

CÓDIGOS BINARIOS.

Un número binario de n-bits puede tener 2^n posibles representaciones pero se pueden crear códigos binarios que tienen un significado concreto y que no tienen porqué emplear todas las representaciones posibles que hay en un número de n-bits. Podemos encontrar códigos binarios como:

BCD-Código Binario Decimal

Una forma natural de representar los números, es en forma decimal por los cual, se ha creado un código llamado BCD donde se emplean 4 bits para representar cada uno de los números del número decimal.

El código BCD representa:

número decimal = número binario

  • 0 = 0000
  • 1 = 0001
  • 2 = 0010
  • 3 = 0011
  • 4 = 0100
  • 5 = 0101
  • 6 = 0110
  • 7 = 0111
  • 8 = 1000
  • 9 = 1001

El BCD usa 4 bits para representar los números decimales del 0 al 9. Si queremos representar el número en decimal 236, representaremos el número en BCD como 0010 0011 0110.

¿Cómo se suman dos números positivos en BCD?

Si queremos sumar 236 + 194 = 430

  (236) 0010     0011     0110
+ (194) 0001     1001     0100
------------------------------
     (3)0011 (12)1100 (10)1010
    +         (6)0110  (6)0110  (Sumo 6 a todos aquellos que exceden de 9)
           1        1           (El acarreo lo llevo al número siguiente)
     -------------------------
        0100     0011    0000 -->  4 (0100) 3 (0011) 0 (0000)

Si la suma de dos números supera el valor máximo de 9 ( valor máximo del BCD), le sumaremos un valor decimal 6 y el 5º bit (acarreo)lo sumaremos a la cifra siguiente ( el me llevo 1 de toda la vida).

¿Como se suman o restan dos números BCD cuando hay números negativos?

Igualmente podemos usar representación con signo-magnitud o Complementos pero en este caso el valor positivo del número se representa con un 0 en código BCD y el valor negativo con un 9.

Lo más usado es emplear el complemento a 10 (número decimales)

Ejemplo de suma:   260+(-150)=110

vamos a emplear el Ca10 para representar el número negativo por lo si calculamos el Ca10  
de 150 ( lo que le falta para llegar a 1000) nos dará 850 y  realizaremos la suma:  

                 0 260    (0 positivo)
                +9 850    (9 negativo)
                -------
                10 110    y se descarta el acarreo final obteniendo 110 que es lo esperado.  
                
Por supuesto un ordenador tratará en BCD

               (0000) 0010 0110 0000  (260 en BCD con signo 0000)
               (1001) 1000 0101 0000  (150 en Ca10 con signo 1001)
               --------------------- 
                1001  1010 1011 0000  (suma en BCD)
                      0110 0110       (sumo 6 a los que pasan de 9)
                   1     1                    
                --------------------
                1010  0001  0001 0000  
                0110                  (sumo 6 a los que pasan de 9)
                ---------------------
               10000  0001  0001 0000 --> +110 en decimal (Descartando acarreo del signo)  
               

Para el caso de querer realizar restas se calcula el complemento a 10 (decimal)del substraendo y este es el que se suma al Minuendo ( teniendo en cuenta que los números negativos ya se expresan también en Complemento a 10 (decimal)). Los ordenadores tienen hardware especial para realizar claculos directamente con números en BCD.

Unidades Aritmético lógicas "ALU's" que trabajan con nñumeros en BCD necesitan más hardware y no gozan de mejor velocidad que las ALUs convencionales en código binario.

⚠️ **GitHub.com Fallback** ⚠️