Código binario natural.
Consiste en representar directamente el número decimal en binario, o lo que es lo mismo cada número
decimal tiene su correspondiente en binario. Ejemplo 35(10 = 100011(2
Códigos BCD (Decimal codificado en binario).
Con estos códigos, para representar un número decimal en binario, se transforman cada una de las cifras
que constituyen el número decimal separadamente, en el caso anterior el número 35, transformado en
binario sería el resultado de transformar primero 3, y después 5.
Código BCD natural (8-4-2-1).
Se basa en representar cada dígito decimal a su correspondiente binario natural. Cada dígito
corresponde a un grupo de 4 bits.
El código BCD es un código ponderado; a cada bit le corresponde un valor (peso) de acuerdo con la
posición que ocupa, igual que el binario natural. Los pesos son: 8-4-2-1. La representación del 1 al 9
corresponde con el binario natural, pero a partir del número decimal 10, se precisan grupos de 4 bits por
dígito. Para codificar un número decimal de N dígitos se requieren N grupos de 4 bits.
Ejemplo 35 = 0011 0111. Es decir 3 (0011) y 5 (0101)
Ejemplo 13 = 0001 0011
Ejemplo 2001 = 0010 0000 0000 0001 (2 = 0010; 0 = 0000; 0 = 0000;1 = 0001)
Código Aiken (2-4-2-1).
También es un código ponderado, aunque ahora los pesos de las cifras según su posición serán: 2, 4, 2 y
1.
Ejemplo 35 = 0011 1011. Es decir 3 (0011, si miramos el peso de los dígitos será = 0 + 0 + 2 +1 = 3) y 5
(1011, si miramos el peso = 2 + 0 +2 +1).
Código exceso tres.
Es un codigo BCD no ponderado, cada combinación se obtiene sumando el valor 3 a cada combinación
binaria BCD natural (8-4-2-1).
Ejemplo 35 = 0110 1000, es decir:
3 = 3 + 3 = 6 = (0110)BCDnatural y
5 = 5 + 3 = 8 = (1000)BCDnatural.
Código exceso tres paridad impar.
En ocasiones se utilizan códigos que son especialmente útiles para algún cometido concreto, esto sucede
con el código que vamos a analizar, se emplea para detectar si ha habido algún error en la transmisión de
los datos codificados, de modo que emplea cinco dígitos en lugar de cuatro, pero de ellos el primero es
un bit de paridad, para obligar a que cada grupo de cinco bits tenga un número impar de unos; si esto es
así, es porque el dato transmitido es correcto, y entonces se procesa la información transmitida que es la
que resulta de decodificar los cuatro últimos bits. Ejemplo 35 =1 0110 0 1000. Es decir 3 (1 0110) y 5 (0
1000).
La siguiente tabla muestra la equivalencia entre los distintos códigos binarios analizados.
CODIGO JOHNSON
El código Johnson es otro modelo de código cíclico, que se obtiene por adición y eliminación de "1"
desde el bit menos significativo.
Tiene una capacidad de codificación de 2·n números, siendo "n" el número de bits. Así, para codificar los
diez primeros números, necesitaremos 5 bits, tal y como se ve en la tabla;
CODIGO ASCII
UNICODE
EBCDIC
Última actualización: 2022-06-08
EBCDIC (Extended Binary Coded Decimal Interchange Code) es un esquema de codificación que se utiliza
normalmente en IBM® Z (z/OS) y iSeries (System i).
EBCDIC fue desarrollado por IBM en 1963.
Algunos caracteres son idénticos en todas las páginas de códigos EBCDIC. Estos caracteres se denominan
caracteres invariables. Otros caracteres pueden variar de una página de códigos a otra. Estos caracteres
se denominan caracteres variables.
Algunos CCSID de EBCDIC de ejemplo son el 37, el 500 y el 1047.
En la tabla siguiente se muestra la página de códigos para el CCSID de EBCDIC 37.
Código Hamming
Para empezar con cualquier juego necesitamos unas normas. Y las normas de Hamming son las tres
siguientes (si estas instrucciones no te aclaran mira la imagen que viene después, y luego vuelve, lo vas a
entender enseguida):
Utilizaremos como “bits de redundancia” los conocidos como “bits de paridad” para comprobar si hay
errores o no (serán las pistas): “1” significa “impar”, y “0” significa “par” (el «Bit de Paridad» es la suma
de “1s”; por ejemplo, la cadena de bits “1011” la suma de “1s” es 3, que es impar, por lo que el bit de
paridad es “1”, Si tienes curiosidad tienes más información sobre «bits de Paridad» en este otro artículo
sobre «Dígitos de control» haciendo click aquí).
Cada “bit de paridad” comprobará unos bits determinados, dependiendo de la posición que ocupe y
siguiendo las normas del siguiente ejemplo. Por ejemplo, la posición es 4, desde está misma posición se
seleccionarán 4, luego dejará 4 sin seleccionar, seleccionará los siguientes 4, para luego dejar los
siguientes 4 sin seleccionar, y así hasta el infinito. Lo mismo para todas las posiciones que son potencias
de dos (para la posición 1 es uno sí, uno no, uno sí, uno no, etc; ¿Y para la posición 2? Dos sí, dos no, dos
sí, dos no; la cuatro te la he dicho antes, ¿Y para los siguientes 8, 16, 32, etc? es muy fácil).
De las anteriores selecciones el “bit de paridad” es de lo seleccionado la posición de número más
pequeña (evidentemente, porque si el bit de paridad dice si es par o impar la suma de los “1s”, si se
comprobara a sí mismo, entraríamos en un bucle infinito sin sentido), el resto son los bits que
comprueba (que serán los que se sumen para saber si es par o impar).
Siguiendo estas instrucciones podríamos dibujar hasta el infinito una matriz infinita. Pero vamos a
reducirla hasta la posición 20 que puedes ver en la siguiente imagen (el resto hasta el infinito es igual
CRC
¿Como funciona?
Consideremos una secuencia de datos de n bits que llamaremos D, que el nodo
Emisor desea enviar al nodo Receptor. El Emisor y el receptor tienen que acordar
primero un patrón de r + 1 bits conocido como Generador que denominaremos
con la letra G.
Para un determinada secuencia de datos, D, el emisor seleccionará r bits
adicionales, R, y se los añadirá a D, de modo que el patrón de d + rbits resultante
(interpretado como un número binario) sea exactamente divisible por G (es
decir, no tenga ningún resto) utilizando aritmética módulo 2. El proceso de
comprobación de errores con los códigos CRC es, por tanto, muy simple: el
receptor divide los d + rbits recibidos entre G. Si el resto es distinto de cero, el
receptor sabrá que se ha producido error; en caso contrario, se aceptarán los
datos como correctos.
Tal vez parezca un poco confuso pero trataremos de ilustrar mejor el metodo
con un ejemplo, Asi:
Ejemplo
Nos piden que Consideremos una secuencia de datos D = 111100101, que un
nodo Emisor desea enviar al nodo Receptor y cuyo Generador es G = 10101.
Calcule el CRC y compruebe en el lado del receptor la secuencia de datos
completa
D = 111100101
G= 1 0 1 1 0 1
x^5 x^3 x^2 x^0
// Entonces podemos escribir G como un polinomio asi: x^5 +x^3 + x^2 + x^0
// PD: Vease que no se tiene en cuenta los bits en 0 ya que al evaluar será 0
gr_polinomio = 5 // Este es el grado del polinomio del generador
Procedimiento para calcular CRC
1- Tomamos la secuencia de datos D y le agregamos tantos ‘ceros’ nos diga el
grado del polinomio, esto equivale al tamaño de nuestro CRC y que
reemplazaremos posteriormente para que sea enviado al receptor. Para nuestro
ejemplo el grado del polinomio generador es 5 por lo tanto tendremos lo
siguiente que denotaremos como D’ = D + 00000, entonces:
D' = 111100101 00000
2- Hacemos los cálculos de los códigos CRC, que se realizan en aritmética
módulo 2, es decir sin ningun tipo de acarreo ni en las sumas ni en las restas.
Esto quiere decir que la suma y la resta son idénticas, y que ambas son
equivalentes a la operación OR-exclusiva (XOR) bit a bit de los operandos, por
ejemplo:
1011 1001
0101 1101
XOR ---- XOR ----
1110 0100
Regresando a nuestro ejemplo lo que haremos es una division usando la
operacion OR-Exclusiva de nuestro D’ con G para obtener el CRC asi:
EMISOR
11110010100000 | 101101
101101|||||||| 110110010
------||||||||
0100011|||||||
101101|||||||
------|||||||
00111001|||||
101101|||||
------|||||
0101000||||
101101||||
------||||
000101000|
101101|
------|
0001010
El resto o residuo de nuestra operación es 0001010 y este es el dato que nos
interesa tomaremos los 5 ultimos bits de la operación ya que 5 es el grado de
nuestro polinomio generador y este sera nuestro CRC asi para nuestro ejercicio
CRC = 01010
3- Con nuestro CRC calculado entonces enviaremos el mensaje M resultante a
nuestro Receptor de esta forma D+CRC asi:
M = D + CRC = 111100101 01010
4- Como nuestro Receptor había negociado el patron conocido como Generador y
lo tiene a disposición debe realizar la división OR-Exclusiva de M y G y si es
exactamente divisible por G ( Es decir no tiene ningún resto) entonces el Receptor
aceptará los datos como correctos; en caso contrario ( el resto es ditinto de cero)
el Receptor sabrá que se ha producido un error. Para nuestro ejemplo entonces:
RECEPTOR
11110010101010 | 101101
101101|||||||| 110110010
------||||||||
0100011|||||||
101101|||||||
------|||||||
00111001|||||
101101|||||
------|||||
0101000||||
101101||||
------||||
000101101|
101101|
------|
0000000
5- Finalmente el resto o residuo de nuestra operación es 0000000 esto quiere
decir que M Es exactamente divisible por G Entonces el Receptor puede concluir
que los datos no contienen ningún error y concluye la comprobación de
redundancia cíclica.
CODIGO GRAY