SPD U02 Codificacion y Almacenamiento de Datos 2007

21
CODIFICACIÓN Y ALMACENAMIENTO DE DATOS Autor: Ruben – Ref.: SPD - U02 - Codificacion y almacenamiento de datos - 2007.doc Página 1 de 21 CONCEPTOS PRELIMINARES Dato Es un conjunto de símbolos a los que se les puede atribuir una interpretación. Por ejemplo la palabra “PERRO” es un conjunto de símbolos (P, E, R, R y O) al que se le puede dar una interpretación. En cambio, “Dn21GK” si bien es un conjunto de símbolos, estos como conjunto carecen de sentido, por lo tanto el conjunto no es un dato. Información Es la interpretación que se da a un dato. Por ejemplo, en el caso de “ perro ” la información que se puede extraer es “ mamífero, carnívoro, cuadrúpedo, con pelos, ladra, etc .”. La información es un conjunto de datos organizados en forma tal que puedan ser utilizados por una computadora. En otras palabras un dato es la representación de la información. Bits y dispositivos biestables Todos los dispositivos de procesamiento y almacenamiento tienen una característica en común - presentan únicamente 2 estados (encendido - apagado / on - off). Los códigos que más se adaptan a este tipo de dispositivos biestables usan únicamente dos caracte- res, los dígitos 0 y 1. Existe un sistema de numeración que utiliza únicamente los dígitos 0 y 1, y se denomina sistema en base 2 o sistema binario. Los dígitos binarios 0 y 1 se denominan bits . Tipos de códigos Existen diferentes códigos usados para representar datos en las computadoras. Los más utilizados son: Código de caracteres Los datos utilizados por las computadoras digitales son expresados generalmente en caracteres. Los caracteres incluyen los dígitos 0 a 9 (numéricos), letras (alfabéticos), signos de puntuación y caracteres especiales (especiales). Los caracteres que una computadora puede almacenar y procesar forman el set de caracteres de esa computadora.

Transcript of SPD U02 Codificacion y Almacenamiento de Datos 2007

Page 1: SPD U02 Codificacion y Almacenamiento de Datos 2007

CODIFICACIÓN Y ALMACENAMIENTO DE DATOS

Autor: Ruben – Ref.: SPD - U02 - Codificacion y almacenamiento de datos - 2007.doc Página 1 de 21

CONCEPTOS PRELIMINARES

Dato Es un conjunto de símbolos a los que se les puede atribuir una interpretación.

Por ejemplo la palabra “PERRO” es un conjunto de símbolos (P, E, R, R y O) al que se le puede dar una interpretación.

En cambio, “Dn21GK” si bien es un conjunto de símbolos, estos como conjunto carecen de sentido, por lo tanto el conjunto no es un dato.

Información Es la interpretación que se da a un dato. Por ejemplo, en el caso de “perro” la información que se puede extraer es “mamífero, carnívoro, cuadrúpedo, con pelos, ladra, etc.”.

La información es un conjunto de datos organizados en forma tal que puedan ser utilizados por una computadora.

En otras palabras un dato es la representación de la información.

Bits y dispositivos biestables Todos los dispositivos de procesamiento y almacenamiento tienen una característica en común - presentan únicamente 2 estados (encendido - apagado / on - off).

Los códigos que más se adaptan a este tipo de dispositivos biestables usan únicamente dos caracte-res, los dígitos 0 y 1.

Existe un sistema de numeración que utiliza únicamente los dígitos 0 y 1, y se denomina sistema en base 2 o sistema binario.

Los dígitos binarios 0 y 1 se denominan bits.

Tipos de códigos Existen diferentes códigos usados para representar datos en las computadoras. Los más utilizados son:

Código de caracteres Los datos utilizados por las computadoras digitales son expresados generalmente en caracteres.

Los caracteres incluyen los dígitos 0 a 9 (numéricos), letras (alfabéticos), signos de puntuación y caracteres especiales (especiales).

Los caracteres que una computadora puede almacenar y procesar forman el set de caracteres de esa computadora.

Page 2: SPD U02 Codificacion y Almacenamiento de Datos 2007

CODIFICACIÓN Y ALMACENAMIENTO DE DATOS

Autor: Ruben – Ref.: SPD - U02 - Codificacion y almacenamiento de datos - 2007.doc Página 2 de 21

El código de caracteres es un tipo de código donde un grupo de dígitos binarios (generalmente 7 u 8) se utiliza para representar cada carácter. Entre los más utilizados encontramos el código ASCII y el código EBCDIC.

Código ASCII Uno de los códigos de caracteres más utilizados es el American Standard Code for Information Interchange, más conocido como ASCII.

El código ASCII es un código de 7 bits, pero frecuentemente se agrega un octavo bit con propósitos de chequeo.

El total de caracteres que se pueden representar en un código de 7 bits es de 128.

Código ASCII Extendido Es una modificación del código ASCII original al que se le agregó un bit para su representación, con lo que se aumentó el número de caracteres representados de 128 a 256.

Código EBCDIC El código EBCDIC (Extended Binary Coded Decimal Interchange Code) es un código de 8 bits con 256 caracteres sin bit de control, muy utilizado en arquitecturas IBM.

CÓDIGOS NUMÉRICOS Los números, en cambio, son representados por códigos numéricos.

El valor de la posición Un número en cualquier base se escribe como un con-junto de dígitos.

En base diez, los dígitos son 0, 1, ...., 9, y en base dos son 0 y 1.

La posición de cada dígito en el número es importante.

Existe un valor asociado a cada posición.

En base diez los valores de las posiciones son, de dere-cha a izquierda, unidades, decenas, centenas, etc., y en base dos son, en el mismo orden, 1, 2, 4, 8, 16, etc.

El dígito que se encuentra en la posición mayor se llama dígito más significativo y el de la posición menor se denomina dígito menos significativo.

Page 3: SPD U02 Codificacion y Almacenamiento de Datos 2007

CODIFICACIÓN Y ALMACENAMIENTO DE DATOS

Autor: Ruben – Ref.: SPD - U02 - Codificacion y almacenamiento de datos - 2007.doc Página 3 de 21

SISTEMA BINARIO

Conversión de binario a decimal

Conversión de un número binario entero a decimal En el sistema binario cada posición representa una potencia de dos (2).

La conversión de sistema binario entero a decimal se realiza como una suma, donde cada sumando es el producto del dígito que ocupa esa posición por la base elevado a la posición (dígito x 2posición).

Conversión de un número binario fraccionario a decimal

La conversión de sistema binario fraccionario a de-cimal se realiza como una suma, donde cada su-mando es el producto del dígito que ocupa esa posi-ción por la base elevado a la - posición (dígito x 2-

posición).

Conversión de decimal a binario

Conversión de un número decimal entero a binario Este método consta de 2 pasos:

El método consiste en dividir el número por 2 en pasos sucesivos, hasta llegar a 1 (uno) como se muestra en la figura.

Page 4: SPD U02 Codificacion y Almacenamiento de Datos 2007

CODIFICACIÓN Y ALMACENAMIENTO DE DATOS

Autor: Ruben – Ref.: SPD - U02 - Codificacion y almacenamiento de datos - 2007.doc Página 4 de 21

El siguiente paso es copiar de derecha a izquierda el resultado final y los restos.

Conversión de una fracción decimal a binario

Pasos para convertir una fracción decimal a binario: 1) Multiplicar la fracción por 2 (dos) 2) Tomar la parte entera del resultado como primer dígito de

la fracción binaria. 3) Volver a multiplicar la parte fraccionaria del resultado por

2 (dos). 4) Tomar la parte entera del nuevo resultado como el siguien-

te dígito de la fracción binaria. 5) Repetir los pasos (3) y (4) hasta que desaparezca la parte

fraccionaria del resultado o hasta que la cantidad de dígi-tos obtenidos de un margen de error aceptable.

SUMA BINARIA

Los pasos de la suma binaria se pueden sintetizar en cuatro reglas sencillas que permiten sumar dos números binarios cualesquiera.

Ejemplos:

Page 5: SPD U02 Codificacion y Almacenamiento de Datos 2007

CODIFICACIÓN Y ALMACENAMIENTO DE DATOS

Autor: Ruben – Ref.: SPD - U02 - Codificacion y almacenamiento de datos - 2007.doc Página 5 de 21

NÚMEROS NEGATIVOS Existen 3 formas comunes de codificar números negativos en computadoras, (signo y magnitud, complemento de dos, complemento de uno).

Código de signo y magnitud En este código, un BIT representa el signo del número, y los otros representan el valor o magnitud.

La convención para el signo es que 0 representa positivo y 1 representa negativo.

El BIT del signo puede ser el primero de la izquierda o el de la derecha, (depende de la conven-ción).

Nosotros utilizaremos el BIT de la izquierda (el más significativo) para el signo.

Ejemplos:

Código complemento de dos En este código, los bits tienen los mismos valores de posición que los números binarios comunes, excepto que el BIT más significativo que representa a un valor negativo.

Los valores de posición para un número de ocho bits (1 byte) en complemento de dos son:

-128 64 32 16 8 4 2 1 Ejemplo:

Page 6: SPD U02 Codificacion y Almacenamiento de Datos 2007

CODIFICACIÓN Y ALMACENAMIENTO DE DATOS

Autor: Ruben – Ref.: SPD - U02 - Codificacion y almacenamiento de datos - 2007.doc Página 6 de 21

Pasos para convertir un número positivo a negativo en complemento de dos 1) Complementar el número (cambiar los 0 por 1 y los 1 por 0). 2) Sumar 1 al número invertido.

Ejemplo:

Resta usando complemento de dos

Las computadoras que utilizan complemento de dos realizan la resta sumando números negativos.

Ejemplo:

Código complemento de uno El complemento de uno se halla complementando el número sin sumar 1 como en complemento de dos.

El valor de posición del BIT más significativo es mayor en uno con respecto al negativo de su valor posicional (ejemplo: si el valor posicional es 32, el negativo es –31 y no -32 como en complemento de dos).

Page 7: SPD U02 Codificacion y Almacenamiento de Datos 2007

CODIFICACIÓN Y ALMACENAMIENTO DE DATOS

Autor: Ruben – Ref.: SPD - U02 - Codificacion y almacenamiento de datos - 2007.doc Página 7 de 21

Resta en complemento de uno El método es similar al usado con complemento de dos, con la excepción que el BIT de OVER-FLOW debe ser sumado.

El proceso de sumar el bit de overflow se llama WRAP - AROUND CARRY.

BITS, BYTES Y WORDS La ventaja de trabajar con bits, es que estos pueden asumir 2 valores (0 o 1) y esto es especialmente adaptable a la electrónica donde se trabaja también con 2 estados, (pasa o no pasa electric idad).

La desventaja que presenta es que se hace dificultoso manejar muchos bits cuando el número de da-tos es elevado.

Para solucionar este problema las computadoras manejan los bits en grupos.

El tamaño del grupo depende del tipo de computadora, del tipo de dato y del dispositivo de almace-namiento.

Byte Es un grupo de 8 bits que almacenan el código de un carácter. La mayoría de las computadoras lo utilizan para éste propósito.

Word Es la cantidad de bits que puede procesar una computadora en una operación. En las computadoras pequeñas una palabra (word) contiene 8 bits, (es sinónimo de byte). Computadoras más potentes poseen palabras de 64 bits.

Page 8: SPD U02 Codificacion y Almacenamiento de Datos 2007

CODIFICACIÓN Y ALMACENAMIENTO DE DATOS

Autor: Ruben – Ref.: SPD - U02 - Codificacion y almacenamiento de datos - 2007.doc Página 8 de 21

BIT DE PARIDAD Muchos de los códigos utilizados para la transmisión de datos agregan a cada uno de los caracteres un bit adicional llamado bit de paridad, a efectos de poder verificar en el punto de destino que di-chos caracteres han llegado correctamente, no habiendo sido alterados por eventuales impulsos eléctricos que pudieran ocurrir en los medios de comunicación empleados (ver más adelante CÓ-DIGOS REDUNDANTES).

Un bit de paridad se añade de manera tal que el número de unos (1) en un carácter sea par (paridad par) o impar (paridad impar) según sea la convención.

Por ejemplo si tomamos como convención la paridad impar para representar la letra "B" cuyo có-digo ASCII es 66:

0 1 0 0 0 0 1 0

Vemos que la cantidad de unos es de 2 (par), por lo tanto el bit de paridad debe ser 1 (uno).

1 1 0 0 0 0 1 0

En cambio si representamos el carácter "C" (ASCII 67)

0 0 1 0 0 0 1 1

Vemos que la cantidad de unos es impar por lo que el bit de paridad debe ser 0 (cero).

0 0 1 0 0 0 1 1

La condición de paridad establecida por cada carácter se conoce con el nombre de paridad horizon-tal.

Es posible también estable-cer una paridad vertical agrupando los caracteres en columnas y aplicando la condición de paridad a los BITS que se encuentran en cada columna.

Observemos que cada ca-rácter está formado por 7 BITS más un bit de paridad "P". Asimismo el último carácter de cuadro, el carác-ter de paridad vertical, se conforma aplicando la con-dición de paridad a los BITS correspondientes de los diferentes caracteres.

Page 9: SPD U02 Codificacion y Almacenamiento de Datos 2007

CODIFICACIÓN Y ALMACENAMIENTO DE DATOS

Autor: Ruben – Ref.: SPD - U02 - Codificacion y almacenamiento de datos - 2007.doc Página 9 de 21

PRODUCTO DE BINARIOS El proceso de cálculo del producto con números binarios es el mismo que se utiliza para calcularlo con números decimales.

Ejemplo:

En decimal: 24 x 12

DIVISION DE BINARIOS La división se realiza por medio de sucesiones de comparaciones y restas.

Las restas sucesivas se realizan utilizando los métodos de complemento de dos o de uno, y luego sumando (cuando se trabaja con divisiones no exactas, pueden ocurrir errores).

CÓDIGO BINARIO DECIMAL (BCD) Los dígitos de 0 a 9 se pueden representar en binario, utilizando un máximo de 4 BITS.

Ejemplo:

El código que utiliza este método de traducir cada dígito decimal por separado se denomina BCD (BINARY CODED DECIMAL).

Page 10: SPD U02 Codificacion y Almacenamiento de Datos 2007

CODIFICACIÓN Y ALMACENAMIENTO DE DATOS

Autor: Ruben – Ref.: SPD - U02 - Codificacion y almacenamiento de datos - 2007.doc Página 10 de 21

Ejemplo:

El código BCD es muy conveniente para hacer pasajes de números decimales a binarios y vicever-sa, pero son necesarios muchos bits para transformar un simple número a binario.

Ejemplo:

Muchas calculadoras de bolsillo utilizan el código BCD.

Suma en BCD La suma se realiza en forma parcializada dígito a dígito, comenzando por el dígito de la derecha y teniendo en cuenta los acarreos para la suma de los dígitos que siguen.

En la suma BCD pueden presentarse 2 situaciones:

1) El resultado de la suma parcial es menor a 10: en este caso queda como está. 2) El resultado parcial es mayor a 9: ante esta situación debe realizarse una corrección sumándole

al resultado 6 (seis) pasando el acarreo que ocurriese a la suma parcial del dígito que le sigue hacia la izquierda.

Ejemplo:

Sumar 1028 + 999

Page 11: SPD U02 Codificacion y Almacenamiento de Datos 2007

CODIFICACIÓN Y ALMACENAMIENTO DE DATOS

Autor: Ruben – Ref.: SPD - U02 - Codificacion y almacenamiento de datos - 2007.doc Página 11 de 21

PUNTO FIJO Los números enteros o fraccionarios expresados en signo y magnitud, complementos o código BCD se denominan números de punto fijo.

Esto se debe a que el punto en binario se encuentra en una posición fija (normalmente no se codifi-ca).

Para enteros se encuentra a la derecha del bit menos significativo, mientras que para fracciones, se encuentra a la izquierda del bit más significativo.

En algunos lenguajes, como el Cobol, la posición del punto decimal se fija al comenzar el progra-ma.

Los números de punto fijo son ideales para aplicaciones comerciales donde la precisión no es im-portante y los números se encuentran en rangos limitados.

Page 12: SPD U02 Codificacion y Almacenamiento de Datos 2007

CODIFICACIÓN Y ALMACENAMIENTO DE DATOS

Autor: Ruben – Ref.: SPD - U02 - Codificacion y almacenamiento de datos - 2007.doc Página 12 de 21

PUNTO FLOTANTE Los números de punto fijo limitan el rango y esto no es conveniente en aplicaciones de ingeniería y científicas.

Una alternativa de codificación es el método de números de punto flotante.

Es similar al método utilizado para escribir números muy grandes o muy pequeños en base diez, llamado notación científica o exponencial.

En esta notación los números se escriben como potencias de diez.

Ejemplo:

3.600.000 = 3.6 x 1.000.000 = 3.6 x 106

0.00003 = 3.0 x 0.00001 = 3.0 x 10-5

La notación científica permite muchas variantes en la expresión de un número, por ejemplo el 3.600.000 puede expresarse como 3,6 x 106 o como 0,36 x 107, esta última variante (expresar el número como menor que 1 se denomina forma normalizada)

Los números de punto flotante usan potencias de dos.

Un número de punto flotante se codifica como una fracción, (llamada mantisa), multiplicada por una potencia de dos, (llamada exponente).

Pasos para convertir un numero de punto flotante de decimal a binario

Ejemplo de un número positivo Usaremos como ejemplo pasar el número +9,5 decimal.

1) Pasar el número a forma normalizada

9,5 x 20 = 4,75 x 21 = 2,375 x 22 = 1,1875 x 23 = 0,59375 x 24

2) Pasar el exponente a exceso.

Pasar a exceso a un número de n bits significa en caso de un número positivo sumarle 2n - 1, y

en caso de un número negativo significa restarle el número a 2n - 1.

Para un número de 8 bits: 128 + 4 = 10000100

3) El signo de la mantisa es positivo por lo que en el bit más significativo va un 0 (cero)

Page 13: SPD U02 Codificacion y Almacenamiento de Datos 2007

CODIFICACIÓN Y ALMACENAMIENTO DE DATOS

Autor: Ruben – Ref.: SPD - U02 - Codificacion y almacenamiento de datos - 2007.doc Página 13 de 21

4) Pasar la mantisa a fraccionario

5) Formato final para una arquitectura de 32 bits:

Ejemplo de un número negativo Usaremos como ejemplo pasar el número -9,5 decimal. 1) Se usa el mismo método que utiliza para números positivos. 2) El exponente se halla de la misma forma. 3) El signo de la mantisa es negativo, por lo que va un 1 (uno) en el bit más significativo. 4) La mantisa es el complemento de la mantisa positiva.

OTRAS BASES Cuando se trabaja con computadoras, a veces es necesario escribir los números en la forma en que son almacenados.

Usar el sistema binario, (base dos), es muy lento y dificultoso.

Sin embargo, escribir números en el sistema decimal, (base diez), significa perder mucho tiempo en convertirlos a base dos.

Lo que es necesario, es escribir los números en una base que luego sea sencillo pasar a base dos, y también su escritura sea corta y rápida.

Existen dos bases numéricas, octal y hexadecimal, que presentan esta características.

Page 14: SPD U02 Codificacion y Almacenamiento de Datos 2007

CODIFICACIÓN Y ALMACENAMIENTO DE DATOS

Autor: Ruben – Ref.: SPD - U02 - Codificacion y almacenamiento de datos - 2007.doc Página 14 de 21

Base octal Es un sistema de numeración cuya base es 8, es decir, utiliza 8 símbolos en la representación de las cantidades (0 a 7).

Conversión de binario a octal Para pasar un número binario, (BASE DOS), a un número OCTAL, (BASE OCHO), hay que agru-par de a tres los dígitos binarios, comenzando desde la derecha, y convertir cada grupo en un dígito en base ocho.

Ejemplo:

Conversión de octal a binario Para pasar un número de octal a binario, hay que convertir cada dígito octal en tres dígitos binarios, agregando ceros a la izquierda de cada uno cuando sea necesario.

Ejemplo:

Conversión de decimal a octal Se utiliza el mismo método de conversión que en el sistema decimal a binario, sólo que se divide por 8, en la parte entera, y se multiplica por 8, en la parte fraccionaria.

Page 15: SPD U02 Codificacion y Almacenamiento de Datos 2007

CODIFICACIÓN Y ALMACENAMIENTO DE DATOS

Autor: Ruben – Ref.: SPD - U02 - Codificacion y almacenamiento de datos - 2007.doc Página 15 de 21

Conversión de octal a decimal Como en binario, se suman los dígitos multiplicados por su valor posicional, la única diferencia es que los valores posicionales se obtienen de elevar 8 posición.

Base hexadecimal Las base hexadecimal, (BASE 16),necesita 16 dígitos por lo que a los dígitos de 0 a 9, debe agre-garle las letras A, B, C, D, E, F cuyos valores son 10, 11, 12, 13, 14 y 15 respectivamente.

Conversión de binario a hexadecimal El método para convertir un número binario a uno hexadecimal es similar al utilizado para los nú-meros octales, con la excepción que los grupos son de 4 dígitos binarios.

Ejemplo:

Conversión de hexadecimal a binario Para pasar un número de hexadecimal a binario, hay que convertir cada dígito hexadecimal en cua-tro dígitos binarios, agregando ceros a la izquierda de cada uno cuando sea necesario.

Conversión de decimal a hexadecimal Se utiliza el mismo método de conversión que en el sistema decimal a binario, sólo que se divide por 16, en la parte entera, y se multiplica por 16, en la parte fraccionaria.

Page 16: SPD U02 Codificacion y Almacenamiento de Datos 2007

CODIFICACIÓN Y ALMACENAMIENTO DE DATOS

Autor: Ruben – Ref.: SPD - U02 - Codificacion y almacenamiento de datos - 2007.doc Página 16 de 21

Conversión de hexadecimal a decimal Como en binario, se suman los dígitos multiplicados por su valor posicional, la única diferencia es que los valores posicionales se obtienen de elevar 16 posición.

CÓDIGOS REDUNDANTES Cuando se teme una modificación accidental de la información durante la transmisión o su almace-namiento en memoria, se emplean códigos que permiten detectar errores (códigos autodetectores) o corregirlos (códigos autocorrectores). Para lograr la detección y/o corrección de estos errores estos códigos utilizan un número de bits superior al estrictamente necesario para codificar la información. Esta cantidad extra de bits utilizada les da el nombre de códigos redundantes.

Algunos de estos códigos los vemos a continuación:

Control dos entre tres En este método se transmite cada dato repetido 3 (tres) veces. En el momento del análisis de la in-formación pueden presentarse alguna de las tres situaciones siguientes: 1) Los tres datos son iguales: Esto quiere decir que la transmisión ha sido correcta, a menos que

haya habido tres errores exactamente iguales, cosa altamente improbable. 2) Hay dos datos idénticos y uno diferente : En este caso ha habido un error en la transmisión del

dato diferente. Esto se arregla corrigiendo al dato modificado (código autocorrector). 3) Existen tres datos distintos : Es evidente que ha habido corrupción en la transmisión. En este

caso no se pueden autocorregir los datos, por lo que es necesario pedir una retransmisión (códi-go autodetector).

Código autocorrector Hamming Los códigos autocorrectores pueden ser muy variados; uno de los más característicos es el código autocorrector Hamming.

Este código puede llegar a corregir varios errores cometidos en la transmisión de una información digitalizada.

A continuación se expone un método base para construir un código Hamming.

El método consiste en ordenar bits de validación (Pi) en las posiciones que corresponden a poten-cias de 2 y los bits de datos (Di ) en las posiciones restantes.

Para generar las posiciones del código Hamming procederemos de la siguiente manera: • Tomemos las siguientes potencias de dos; 20 , 21, 22, 23

para una representación de 4 bits. • Examinemos los valores obtenidos de estas potencias: 20 =1 , 21 =2, 22 =4, 23 =8.

Page 17: SPD U02 Codificacion y Almacenamiento de Datos 2007

CODIFICACIÓN Y ALMACENAMIENTO DE DATOS

Autor: Ruben – Ref.: SPD - U02 - Codificacion y almacenamiento de datos - 2007.doc Página 17 de 21

• Designaremos como P1, P2, P4, P8 a los valores obtenidos. • Los números restantes que no se generan en forma directa por las potencias de 2, estarán reser-

vados para representar los datos y los designaremos como D3, D5, D6, D7, D9, D10, respecti-vamente.

Por lo tanto, la representación de la información en el código Hamming queda determinado de la si-guiente forma:

Para generar las posiciones del código Hamming del mensaje a transmitir se procede de la siguiente manera:

Cada peso generará una determinada posición dependiendo de su paridad paro impar, por ejemplo,

P1 analizará las posiciones 1,3,5,7,9...

P2 analizará las posiciones 2,3,6,7,10...

P4 analizará las posiciones 4,5,6,7,12...

Estas posiciones se generaran a partir de la posición de los unos , es decir, unos en la primera co-lumna para P1, unos en la segunda columna para P2 y finalmente unos en la tercera columna para P4.

Al codificar un número, cada bit de validación deberá forzar la paridad de un determinado número de posiciones. Al comprobarse la exactitud de una transmisión se verificarán esas mismas posicio-nes y se obtendrán los bits de validación (Ci) correspondientes. El valor decimal equivalente..C8 C4 C2 C1 indicará la posición en la cual ocurrió un error.

Cada bit de validación verificará una determinada cantidad de posiciones. • El bit de validación C1 puede probar posiciones 1,3,5,7,9,... • El bit de validación C2 puede probar posiciones 2,3,6,7,10,11,..

Page 18: SPD U02 Codificacion y Almacenamiento de Datos 2007

CODIFICACIÓN Y ALMACENAMIENTO DE DATOS

Autor: Ruben – Ref.: SPD - U02 - Codificacion y almacenamiento de datos - 2007.doc Página 18 de 21

• El bit de validación C4 prueba posiciones 4,5,6,7,12,13,14,15,... • El bit de validación C8 prueba posiciones 8,9,10,11,12,13,14,15,24,... Ejemplo:

Codificar en Hamming de 4 bits de datos, el número 10102.

1) Ubicaremos los datos en las posiciones D3, D5, D6 y D7 respectivamente

2) A continuación calcularemos las posiciones P1, P2, P4 y su paridad correspondiente para cada

caso:

3) Luego, la cifra a transmitir es 1011010 que proviene del siguiente formato:

Al recibir supongamos llega 1010010, obviamente hay un error.

Veamos como lo detecta Hamming:

Luego detecta un error en la posición 4 (P4). Este código permite detectar y corregir errores simples y sólo detectar errores dobles.

Ejemplo:

Supongamos que en la retransmisión del mensaje se recibe 1011000 generando nuevamente un error

Page 19: SPD U02 Codificacion y Almacenamiento de Datos 2007

CODIFICACIÓN Y ALMACENAMIENTO DE DATOS

Autor: Ruben – Ref.: SPD - U02 - Codificacion y almacenamiento de datos - 2007.doc Página 19 de 21

Page 20: SPD U02 Codificacion y Almacenamiento de Datos 2007

CODIFICACIÓN Y ALMACENAMIENTO DE DATOS

Autor: Ruben – Ref.: SPD - U02 - Codificacion y almacenamiento de datos - 2007.doc Página 20 de 21

EJERCITACIÓN 1) Escriba el significado de los siguientes términos:

a) Valor posicional b) Dígito más significativo

c) Set de caracteres d) Bit, byte, Word

e) BCD f) Bit de paridad

2) Convertir los siguientes números expresados en base diez a código BCD

a) 91 b) 56 c) 493 3) Convertir los siguientes números expresados en BCD a decimal

a) 10010110 b) 110111

c) 10000111 d) 011001000111

4) Realizar las siguientes sumas en BCD

a) 153 + 233 b) 125 + 48 c) 1894 + 199 5) Convertir los siguientes números decimales a código signo y magnitud

a) 39 b) – 61

c) 117 d) – 117

6) Convertir los siguientes números expresados en signo y magnitud a números decimales

a) 00110110 b) 10100110 c) 11011101

7) ¿Cuál es el mayor número que puede ser expresado en 5 bits en signo y magnitud?

8) Escribir los siguientes números decimales en 6 bits de código complemento de dos a) 27 b) – 13 c) 32 d) – 32

9) Pasar los siguientes números expresados en 6 bits de complemento de dos a decimal a) 010010 b) 111011 c) 111110

10) Realizar las siguientes restas utilizando 6 bits en complemento de dos a) 15 – 7 b) 28 – 18 c) 19 – 22 d) –30 –3

11) ¿Cuáles son el mayor y el menor número que pueden ser expresados en 6 bits de complemento

de dos? 12) Realizar los ejercicios 8, 9 y 10 expresándolos en complemento de uno. 13) Utilizando el método de bit de paridad, indicar cuál de los siguientes datos ha sido mal transmi-

tido (utilizar paridad impar). a) 100101 b) 100100

c) 000000 d) 101100

e) 100001 f) 100000

14) Un programa de aplicación requiere fechas escritas de la siguiente forma: 15/08/05. Usando 4

bits BCD por dígito y 1111 para la “/”, codificar las siguientes fechas en una palabra de 32 bits. a) 31/10/54 b) 29/02/64 c) 06/01/56

Page 21: SPD U02 Codificacion y Almacenamiento de Datos 2007

CODIFICACIÓN Y ALMACENAMIENTO DE DATOS

Autor: Ruben – Ref.: SPD - U02 - Codificacion y almacenamiento de datos - 2007.doc Página 21 de 21

15) Basándose en las especificaciones del ejercicio anterior decodifique la siguiente fecha: 00000001111100000100111101100001 16) Siguiendo las reglas del ejercicio 14 determine qué fechas están bien expresadas y cuales no (en

los casos en que haya errores explicar cuáles son). a) 00010000111100000010111110010101 b) 00110000111100000010111110000101 c) 00110000111100001100111101110011

17) Convertir los siguientes números binarios a octal a) 101010 b) 110111000

c) 11111111 d) 1001

e) 10011100111 f) 1

18) Convertir a binario los siguientes números octales

a) 74 b) 61

c) 132 d) 153

e) 472 f) 48

19) ¿Qué números decimales representan cada uno de los números octales del ejercicio anterior? 20) ¿Cuántos dígitos octales pueden ser almacenados en una palabra de 24 bits? 21) Convertir los siguientes números binarios a hexadecimal

a) 01100101 b) 11000101 c) 1001011111

22) ¿Cuántos dígitos hexadecimales pueden ser almacenados en una palabra de 24 bits? 23) Sabiendo que nuestro procesador utiliza palabras de 16 bits para almacenar los números de

punto flotante (1 bit = signo / bits 2 a 8 = exponente / bits 9 a 16 = mantisa), convertir los si-guientes ejemplos a números decimales. a) 0100001101010000 b) 1000010101011111 c) 0100000111100000

d) 0100000001000000 e) 1000000001111111 f) 0000000110000000

g) 1100000000111111

24) Convertir los siguientes números decimales a números de punto flotante.

a) 30 b) 6,05 c) 10 d) –14,25 25) Realizar los siguientes productos en sistema binario

a) 10 x 50 b) 15 x 3 c) 18 x 31

26) Utilizando el método Hamming explicado en este apunte, desarrolle el código a transmitir de los siguientes datos a) 1101 b) 1001 c) 0110 d) 0001

27) Determine si los siguientes datos en código Hamming han sido bien transmitidos. En los casos

erróneos identifique el bit mal transmitido. a) 0010111 b) 0111010 c) 1100110

28) ¿Cuántos bits son necesarios para transmitir un dato de 6 bits en código Hamming?