C_Códigos Binarios - jospicant/IceStudio GitHub Wiki
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:
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.
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).
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.