Portada » Informática » Número de 8 bits en notación sesgada
Para que un ordenador pueda manejar información hay que codificarla en binario, encontrar una aplicación al menos inyectiva: f: A fi Bn ; A de objetos a codificar y el conjunto Bn = B×B×…×B (n veces), siendo B={0,1}. Como la aplicación es inyectiva a objetos distintos le corresponden codificaciones distintas. La unidad empleada es el byte, casi siempre es múltiplo de 8. La memoria del ordenador es finita, por lo que hay que hacer finito el número de objetos de A.
Los números enteros como el conjunto Z son infinitos, selecciona un subconjunto de Z suficientemente grande para que contenga todos los números q necesitar en el problema. Si utilizamos un byte puede representar 28= 256 números, si utilizamos 2 bytes, 216 = 65536, con 4 bytes, 232 = 4394967296.La limitación del rango hace que los resultados de las operaciones no siempre queden dentro del rango, el procesador debe avisar al programador de que el resultado es incorrecto, para que pueda tomar las medidas oportunas. Si el problema no necesita emplear números negativos la codificación más elemental es escribir en base 2, es lo que se llaman números sin signo o binario puro.
Si necesitamos números negativos hay diversas representaciones, número con signo y magnitud:
la más sencilla es reservar un bit para el signo y el resto para el valor absoluto. El signo se suele poner en el bit más significativo y 0 para números positivos y 1 para negativos.
de la codificación de números enteros por signo y magnitud. 1º El 0 tiene 2 representaciones, uno como +0 y otro como -0. 2º la dificultad para realizar las operaciones con números negativos, sumas y restas. Otra forma de codificar los números con signo es la notación en complemento a 1.
Los positivos se representan en binario puro con un bit menos y los negativos el complemento a 1, el bit superior de todos los positivos es 0 y el de los negativos es 1. Esta notación presenta también algunos inconvenientes: el cero sigue teniendo dos representaciones 00…00 y 11…11 y las operaciones de suma y resta son más sencillas que en el caso anterior, pero necesitan también ser especiales, no valen las de enteros sin signo.El método más empleado para codificar enteros con signo es el de complemento a 2, codifica los positivos en binario puro y los negativos, el positivo que se obtiene al sumarles 2n siendo n el número de bits que de la representación, sumar 1. Ventajas: permite emplear la misma operación de sumar que para números sin signo.El cero tiene representación única es sólo 00…00. Los positivos empiezan por 0 y los negativos por 1, el mayor número representable con n bits es 2n-1-1 y el menor es -2n-1. Para sumar y restar igual que para los números sin signo, pero la multiplicación y división necesitan ser especiales.
Son infinitos, como tiene infinitos decimales es imposible codificarlo. La segunda de las representaciones, se aproxima cada número real por un racional y se escriben su numerador y denominador como una pareja de enteros. Inconvenientes: al operar con racionales el numerador y el denominador crecen excesivamente.Para sumar y restar, las operaciones son idénticas a las realizadas con enteros; para la multiplicación y la división se hacen con enteros, la coma al final en el sitio oportuno. Notación en coma fija el mayor inconveniente. La notación en coma flotante:
Poner el número como A ×10B con 1 ≤ A < 10=»» y=»» b=»»>∈ Z,
la parte A mantisa y la parte B se llama exponente.
El ordenador emplea este representación, pero cambiando 10 por 2 y tomando un número fijo de bits. Para el signo del exponente se suele añadir una constante llamada exceso de modo que se eviten los números negativos. El signo se coloca en un bit, 0 para los positivos y a 1 para los negativos. Como el bit más significativo de la mantisa es 1 se suprime. Si ponemos primero el signo, después el exponente y finalmente la mantisa.Como codifican los procesadores de la familia 80×86 de Intel los números en simple precisión.
Para más precisión un formato de doble precisión, como el anterior, pero con 53 bits para la mantisa y 11 bits para el exponente, eso equivale a 16 decimales y llega hasta 10±308. Existe un formato llamado temporal que emplea 64 bits para la mantisa y 15 bits para el exponente obteniendo 19 decimales y llega hasta 10±4932,no se suprime el bit más significativo de la mantisa. La representación del número anterior como doble.Resumen:
Tipo |
Bits BitsMantisa exponente |
Total bits |
Exceso |
Decimales aprox |
Pot. De 10aprox. |
|
Simple |
24 |
8 |
32 |
127 |
7 |
38 |
Doble |
53 |
11 |
64 |
1023 |
16 |
308 |
Temporal |
64 |
15 |
80 |
16383 |
19 |
4932 |
No cometer errores de redondeo al pasar de decimal a binario se puede perder precisión. La solución es representarlo en notación en coma fija y en decimal. Los dígitos del 0 al 9 se pueden representar con un número de 4 bits, Decimal Codificado en Binario.
Es tratar información de tipo alfanumérico, es decir textos.
EBCDIC, actualmente en desuso.
ASCII (American Standard Code for Information Interchange)
, angloparlantes, contiene la ‘ñ’. Existe un estándar posterior al código ASCII, Ansí ,el código que se empleaba por ejemplo el entorno Windows 3.X de Microsoft.Windows utilizan también un código de 16 bits llamado UNICODE.
Para introducir una función en el ordenador es suficiente dar una ecuación que permita calcular la misma, pero esto, en el caso del sonido no es posible espacio limitado de memoria. Representación aproximada. Lo que se hace es muestrear el sonido.El oído humano es capaz de escuchar las frecuencias que hay entre 20 Hz y 20000 Hz. Para recuperar las frecuencias hasta 20000 Hz hace falta muestrear con el doble de frecuencia, es decir 40000 Hz.
Discos compactos, CD, frecuencia de muestreo 44100 Hz. De 16 bits y dos canales (estéreo), hacen falta 44100×2×2 = 176400 bytes = 172 Kb. 10 Mb por minuto y 600 Mb en una hora. La voz humana queda perfectamente representada con una frecuencia de muestreo de 11025 Hz, las frecuencias no pasan de 4000 Hz.El principal inconveniente de esta representación del sonido, si lo que se quiere representar música, métodos que requieren menos memoria.La música se puede representar mediante una partitura, notas, cada una con una duración y tocadas en diversos momentos con diversos instrumentos. Darle un número a cada nota, un número a cada instrumento y representar de alguna forma en que instante del tiempo tiene lugar cada una. Con este sistema 1 segundo de sonido con cuatro pistas 100×2×4 = 800 bytes.Para recuperar el sonido se necesitaría tener digitalizadas previamente todas las notas de todos los instrumentos. Normalmente se suele poner sólo una nota por instrumento y obtener el resto variando la frecuencia de reproducción de dicha nota.
[a,b] lo dividimos en 640 partes y [c,d] en 480. Más calidad, aumentar dichos números.
El sistema RGB; Rojo (Red), Verde (Green) y Azul (Blue):
es la mezcla a partes iguales de Rojo y Verde.
Se obtiene mezclando a partes iguales Rojo y Amarillo, es decir, mezclando el doble de Rojo que de Verde y nada de Azul.
Se obtiene por la mezcla a partes iguales de los tres colores.Si para cada color empleamos un número de 8 bits, tendremos en total 24 bits por píxel lo que proporciona 224 = 16777216 colores.
Si volvemos a la imagen de partida de 640×480 pixels para codificarla 640×480×3 = 921600 bytes, es decir 900 Kb, 5 segundos CD.Para representar la imagen se pone primero los colores de los pixels de la primera línea, de izquierda a derecha, después los de la segunda y así hasta la última.Es necesario, reducirlo. Lo más elemental es reducir el número de pixels, con dichos métodos se pierde calidad en la imagen.Supongamos que la imagen que queremos codificar es un dibujo hecho por nosotros.
Como es natural, no tenemos 16777216 pinturas, sino tan sólo 10 ó 15.En lugar cada color por tres bytes, es mejor numerar las pinturas: la 0 es negra, la 1 azul, la 2 blanca, etc. Y representar cada píxel. Si 16 pinturas, podemos codificar cada una con 4 bits y la imagen ocupará 640×480×4 = 1228800 bits, 150 Kb, la sexta parte. Además tendremos que almacenar una tabla, llamada paleta.En la práctica no se emplean paletas de más de 8 bits. Esto significa que deberíamos, previamente, reducir a un máximo de 256 colores.
Para que el cerebro no perciba el salto entre las imágenes es suficiente con emplear 15 fotogramas por segundo; si consideramos fotogramas de 640×480 codificados con 24 bits, un segundo de vídeo consume más de 13 Mb. Eso presenta dos problemas: a) Cantidad elevada de espacio de almacenamiento. B) Y la velocidad de transferencia los videos se deben forzosamente almacenar comprimidos. Hay básicamente dos tipos de compresión: a)
En este caso, al descomprimir los datos, obtenemos algo distinto al original. Se puede lograr un compromiso entre ambos factores (pérdida de calidad y grado de comprensión) se pueda almacenar en un CDROM (es decir en 650 Mb) una hora de vídeo con una calidad aceptable.
Supongamos que en la primera línea los 10 primeros pixels son del mismo color, por ejemplo azul, entonces la codificación de la imagen empezará así:0001, 0001, 0001, 0001, 0001, 0001, 0001, 0001, 0001, 0001, …
Es fácil reducir esos bits a algo más comprimido, es suficiente con decir: repetir 10 veces el valor 0001, el primer número indica el número de veces que se ha de repetir un color y el segundo el color que se repite.Este sistema de compresión se llama RLE siglas que corresponden a Run Length Encoding.
El sistema anterior funciona muy bien en una imagen con 16 colores y 307200 píxel, pero para otro tipo de datos, no es fácil.El algoritmo de Huffman, es más complicado que los anteriores, pero tiene una aplicación más general.
El método más sencillo de detectar errores en un bit es la paridad.
A) La paridad par que añade un bit 1 si hay un número impar de unos en el código y 0 si hay un número par. Ej: dato=0110, paridad=0.
B) La paridad impar bit 0 si hay un número impar de unos y 1 si hay un número par. Ej: dato=0100, paridad=0.Si se comete un error en uno de los bits del código el número de bits a 1 pasa de par a impar o viceversa, la paridad calculada no coincidir con la almacenada y el método detecta los errores en un bit. Si se comete un error en dos bits, no nos enteramos del error.Dado que sólo detecta los errores en 1 bit y los errores no suelen ocurrir en un único bit, el método no es de mucha aplicación, salvo en casos como la memoria que se supone que es fiable al 100%.En el caso de los discos flexibles CRC o Cyclic Redundancy Check.
El código de Hamming sirve para corregir errores en k bits y, es una aplicación inyectivaque permite codificar datos de n bits en n+r bits, a partir de los n+r se pueda recuperar el código original de n bits incluso cuando el código de n+r tenga k bits erróneos.Para detectar los errores en un bit se hallan los valores de C1, C2, …, pero sumando ahora el bit correspondiente. Si no se han producido errores el valor del bit b2i es la suma de los restantes que aparecen en Ci, luego al sumarse consigo mismo da cero (sin acarreo 1+1=0 y 0+0=0), luego el valor formado por los Ci es 0. Si hubiera un error en un bit, ese bit forma parte de los Ci necesarios para obtener ese bit en binario, con lo cual dichos Ci aparecerían alterados (es decir a 1), y por la propia construcción el número … C2 C1 nos indica el bit erróneo, con modificar ese bit y extraer el dato tenemos el dato corregido.
La criptografía se utiliza para proteger información para la cual es posible el acceso ilegal y son ineficaces otros métodos de protección.La solución es buscar un mecanismo de transformación de los mensajes a una forma ininteligible, que carezca de sentido para todos aquellos que no sean los destinatarios legales. La forma más simple de encriptar un mensaje, es codificándolo según un método de uso particular. Por p y, m el mensaje codificado en binario. El número p es elegido por el receptor, siendo este la clave de la seguridad del código.