Administración de sistemas informáticos
Sistemas informáticos monousuario y multiusuario
TEMA 1: SISTEMAS DE NUMERACIÓN Y REPRESENTACIÓN DE LA INFORMACIÓN
INTRODUCCIÓN
Según la Real Academia Española, la INFORMÁTICA es el conjunto de conocimientos científicos y técnicas que hacen posible el tratamiento automático de la información por medio de ordenadores (computadoras electrónicas).
En definitiva trabajaremos con el siguiente sistema, en el que las salidas dependerán de las entradas:
La COMPUTADORA es una máquina capaz de aceptar unos datos de entrada, efectuar con ellos operaciones lógicas y aritméticas y proporcionar la información resultante a través de un medio de salida; todo ello bajo el control de un programa de instrucciones previamente almacenado en la propia computadora.
Los DATOS son un conjunto de símbolos utilizados para expresar o representar un valor numérico, un hecho, un objeto o una idea, en la forma adecuada para ser objeto de tratamiento. Por ejemplo son datos la dirección de una persona, el NIF, el hecho de que se haya producido una venta, etc.
Dado que el lenguaje escrito es la forma más habitual de transmitir, comunicar o almacenar información en la sociedad actual, los caracteres resultarán muy útiles debido a la gran variedad de información que con ellos podemos representar. Los grafismos o caracteres utilizados usualmente en informática, tanto en la entrada como en la salida, son: caracteres numéricos, caracteres alfabéticos y caracteres especiales.
1.1 - CODIFICACIÓN DE LA INFORMACIÓN
La CODIFICACIÓN es una transformación que representa los elementos de un conjunto mediante los de otro, de forma que a cada elemento del primer conjunto le corresponda un elemento distinto del segundo. De esta forma comprimimos y estructuramos la información.
En la computadora esta información se almacena y se transfiere de un sitio a otro según un código que utiliza sólo dos valores (código binario) representados por 0 y 1.
La unidad más elemental de información es un valor binario, conocido como BIT (del inglés Binary digiT). Es una posición o variable que toma el valor 0 ó 1. Representa la ocurrencia o no de un suceso entre dos posibilidades distintas.
La información se representa mediante caracteres, y estos se codifican internamente mediante un código binario, es decir, bits. Por lo tanto, a cada carácter le va a corresponder un cierto número de bits. Un BYTE será el número de bits necesarios para almacenar un carácter. Generalmente un byte son 8 bits, aunque dependerá del código que utilice la computadora.
Como el byte es una unidad muy pequeña, para medir la capacidad de almacenamiento se suelen utilizar múltiplos:
1 Kilobyte = 1024 bytes = 2
bytes
10
bytes
1 Megabyte = 1024 Kb = 2
kb = 2
bytes
10
bytes
1 Gigabyte = 1024 Mb = 2
Mb = 2
kb = 2
bytes
10
bytes
1 Terabyte = 1024 Gb = 2
Gb = 2
Mb = 2
kb = 2
bytes
10
bytes
Ya hemos visto que la información se le da al ordenador en la forma usual escrita que utilizamos, es decir, con ayuda de un alfabeto o un conjunto de símbolos que denominamos caracteres.
Además de los caracteres gráficos, los caracteres que constituyen el alfabeto suelen agruparse en cuatro categorías:
-
Caracteres alfabéticos: mayúsculas y minúsculas del alfabeto inglés (no se incluyen Ñ ni ñ).
-
Caracteres numéricos: 0, 1, 2, …, 9.
-
Caracteres especiales: ), ¿, /, Ñ, ñ, …
-
Caracteres de control: por ejemplo el fin de línea.
Como ya hemos dicho, la computadora almacena toda la información por medio de dos valores (bit), representados por 0, 1. Por lo tanto, para traducir la información habrá que establecer una correspondencia entre el conjunto de todos los caracteres:
" {A, B, …, Z, a, b, …, z, 0, 1, 2, …, 9, +, /….},
y el conjunto binario:
" {0, 1}
A cada elemento de le corresponderá un elemento distinto de (n bits). Codificamos los elementos de un conjunto mediante los de otro.
A estos códigos de transformación se les denomina códigos de Entrada/Salida o códigos externos. Se pueden definir de forma arbitraria, aunque existen códigos normalizados utilizados por diferentes constructores de computadoras.
Para las operaciones aritméticas utilizaremos el sistema de numeración en base dos.
1.2 - SISTEMAS DE NUMERACIÓN USUALES EN INFORMÁTICA
Las computadoras suelen efectuar las operaciones aritméticas utilizando una representación para los datos numéricos basada en el sistema de numeración de base dos o binario natural.
También se utilizan otros sistemas de numeración, preferentemente el octal y el hexadecimal, para obtener códigos intermedios, con el fin de poder pasar más fácilmente del código binario al decimal y viceversa.
1.2.1 - REPRESENTACIÓN POSICIONAL DE LOS NÚMEROS
Un sistema de numeración en base “b” utiliza para representar los números un alfabeto compuesto por “b” símbolos o cifras. Así, todo número se expresa por un conjunto de cifras, contribuyendo cada una de ellas con un valor. Este valor dependerá de la cifra en sí y de la posición que ocupa dentro del número.
En el sistema de numeración decimal, (sistema en base 10) que es el que habitualmente se utiliza, b = 10 y el alfabeto está constituido por diez símbolos, denominados también cifras decimales:
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
Por ejemplo, el número 5.629,93 puede obtenerse de la siguiente forma:
5.629,93 = 5000 + 600 + 20 + 9 + 0,9 + 0,03 = 5x10³ + 6x10² + 2x10¹ + 9x10º + 9x10¹ + 3x10²
Cada posición, por lo tanto tiene un peso y un nombre específicos:
Posición 0: peso bº, unidades (9).
Posición 1: peso b¹, decenas (2).
Posición 2: peso b², centenas (6).
Posición 3: peso b³, millares (5).
………………………………………
Generalizando:
N " …n n n n n n n…
N " ...n
b
+ n
b
+ n
b
+ n
b
+ n
b
+ n
b
+ n
b
...
Ejemplo: sistema de numeración en base ocho, b = 8 y " {0, 1, 2, 3, 4, 5, 6, 7}
625,36
= 6x8² + 2x8¹ + 5x8º + 3x8¹ + 6x8² = 407,88
1.2.2 - SISTEMA DE NUMERACIÓN EN BASE DOS
Ya vimos que las operaciones aritméticas se suelen realizar utilizando una representación para los datos y resultados en binario natural.
En este sistema la base en b = 2 y se utilizan solamente dos elementos para representar cualquier número {0, 1}, cifras binarias o bits.
Para transformar un número de binario a decimal, basta con tener en cuenta la generalización que hemos visto.
Ejemplos:
110100
= 1x2
+ 1x2
+ 0x2
+ 1x2
+ 0x2
+ 0x2
= 32 + 16 + 4 = 52
0,10100
= 0x2
+ 1x2
+0x2
+1x2
+0x2
+0x2
= 0,5 + 0,125 = 0,625
10100,001
= 1x2
+1x2
+1x2
= 16 + 4 + 0,125 = 20,125
Si nos fijamos, para pasar un número de binario natural a decimal, basta con sumar los pesos de las posiciones en las que hay un uno.
Para transformar un número decimal a binario dividimos entre dos sucesivamente la parte entera del decimal y multiplicamos sucesivamente por dos la parte fraccionaria.
Ejemplo: 26,1875
26 2
06 13 2
0 1 6 2
0 3 2
1 1
26,1875
= 11010,0011
1.3 - OPERACIONES ARITMÉTICAS Y BOOLEANAS CON VARIABLES BINARIAS
Una variable binaria, que toma los valores 0 ó 1, hemos visto que puede representar un valor numérico en el sistema de numeración en base dos. Por lo tanto, podremos realizar operaciones aritméticas.
Como la representación en binario natural es una notación ponderada (N = …n
b
+ n
b
+ n
b
+...) las operaciones aritméticas en binario serán similares a las realizadas en decimal, aunque será necesario utilizar las siguientes tablas:
Suma aritmética con variables binarias |
0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 0 y me llevo una |
Resta aritmética con variables binarias |
0 - 0 = 0 0 - 1 = 1 y debo una 1 - 0 = 1 1 - 1 = 0 |
Producto aritmético de variables binarias |
0 x 0 = 0 0 x 1 = 0 1 x 0 = 0 1 x 1 = 1 |
Ejemplos:
1110101 1101010
+ 1110110 1010111
11101011 0010011
1010011
x10
1101010
1101010
100111110
Si nos fijamos bien, podemos comprobar que multiplicar por 10
(es decir, 2 en el sistema decimal) equivale a añadir un cero a la derecha (es similar a multiplicar por 10 en el sistema decimal). De igual forma, dividir por 10
(2 en el sistema decimal) se hace desplazando la coma decimal a la izquierda o eliminando ceros a la derecha.
Además de las operaciones aritméticas, podemos realizar operaciones lógicas con variables binarias u operaciones booleanas. ¿Cuál es el origen de todo esto?. En 1854 un matemático inglés, llamado George Boole, publicó un libro titulado “Las leyes del pensamiento”, que consistía en representar la lógica mediante símbolos matemáticos. El álgebra de Boole (álgebra booleana o álgebra lógica) sirve de base hoy en día a los ordenadores, y les confiere una forma de “pensar”.
Las operaciones booleanas u operaciones lógicas con variables binarias (consideradas como variables de conmutación) más importantes son:
-
Suma lógica: +, unión, función OR (o).
-
Producto lógico: x, intersección, función AND (y).
-
Complementación: -, inversión, negación, función NOT (no).
Estas operaciones se rigen según las siguientes tablas:
Suma booleana o unión |
0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 1 |
Producto booleano o inersección |
0 x 0 = 0 0 x 1 = 0 1 x 0 = 0 1 x 1 = 1 |
Complementación o inversión booleana |
= 1 = 0 |
También es frecuente utilizar operaciones combinadas:
-
NAND: AND con NOT.
-
NOR: OR con NOT.
Función lógica NAND | |||
A | b | axb | |
0 | 0 | 0 | 1 |
0 | 1 | 0 | 1 |
1 | 0 | 0 | 1 |
1 | 1 | 1 | 0 |
Función lógica NOR | |||
a | b | a + b | |
0 | 0 | 0 | 1 |
0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 1 | 0 |
Las operaciones lógicas no se realizan como las aritméticas, sino que se opera bit a bit:.
Ejemplos :
10000 + 11110 = 11110 (OR)
111011 x 011011 = 011011 (AND)
= 001011 (NOT)
== 00000 (NOR)
== 10011 (NAND)
4 - REPRESENTACIÓN EN COMPLEMENTOS
Para representar un número negativo, en cualquier sistema de numeración, podemos utilizar el “complemento de ese número a la base o a la base menos uno” del sistema de numeración utilizado. De esta forma las sumas y restas quedan reducidas a sumas, independientemente de los signos de los operandos.
Para el ordenador este sistema de representación es muy importante, ya que al utilizarlo se reduce la complejidad de los circuitos de la Unidad Aritmético-Lógica, es decir, no son necesarios circuitos específicos para restar.
4.1 COMPLEMENTO A LA BASE MENOS UNO de un número N, es el número que resulta de restar cada una de las cifras de N a la base menos uno del sistema de numeración que se esté utilizando.
Se pueden restar dos números sumando al minuendo el complemento a la base menos uno del sustraendo. La cifra que se arrastra del resultado se descarta y se suma al resultado así obtenido.
- En base 10.
Supongamos que deseamos hacer las operaciones 77 - 63 y 1100 - 16. Podemos hacerlo de la forma habitual:
77 - 63 = 14
1100 - 16 = 1.084
O bien podemos utilizar el complemento a 9 de los sustraendos:
- Complemento a 9 de 63: 99 - 63 = 36
- Complemento a 9 de 16 (utilizo el mismo número de cifras que tiene el minuendo): 9999 - 0016 = 9983
Sumamos ahora al minuendo el complemento a 9 del sustraendo y el acarreo lo sumamos al resultado:
- 77 + 36 = (1)13; 13 + 1 = 14
- 1100 + 9983 = (1)1083; 1083 + 1 = 1.084
- En base dos.
Seguimos el mismo procedimiento que en el caso del sistema decimal.
Ejemplo:
1000111 - 10010 = 0110101
Calculamos el complemento a 1 de 10010 teniendo en cuenta que el minuendo tiene 7 cifras:
1111111 - 010010 = 1101101
Vemos que para transformar un número binario N a complemento a 1, basta con cambiar en N los ceros por unos y los unos por ceros.
1000111 + 1101101 = (1)0110100; 0110100 + 1 = 0110101
4.2 COMPLEMENTO A LA BASE de un número N, es el número que resulta de restar cada una de las cifras del número N a la base menos uno del sistema de numeración que se esté utilizando y posteriormente sumar uno a la diferencia así obtenida.
Así, se pueden restar dos números sumando al minuendo el complemento a la base del sustraendo, despreciando el acarreo del resultado.
- En base 10.
Supongamos que queremos efectuar la siguiente operación: 100 - 16 = 84
El complemento a 10 de 16, teniendo en cuenta que 100 tiene una cifra más: 999 - 16 = 983; 983 + 1 = 984.
Sumamos al minuendo el complemento a 10 del sustraendo: 100 + 984 = (1)084
- En base dos.
Supongamos que queremos efectuar la siguiente resta: 11001 - 10010 = 00111.
El complemento a 2 de 10010, teniendo en cuenta el número de cifras del minuendo, será: 11111 - 10010 = 01101;
01101 + 1 = 1110.
Sumamos al minuendo el complemento a 2 del sustraendo y despreciamos el acarreo del resultado:
11001 + 1110 = (1)00111
Como se puede ver, para transformar un número binario N a complemento a 2, basta con cambiar los unos por ceros y los ceros por unos en N, y sumar uno al resultado.
Generalizando se tiene que:
-
Complemento a la base b de un número N de n cifras es: (b - N).
-
Complemento a la base menos uno, b-1, de un número N de n cifras es: (b - N - 1).
5 - CÓDIGOS INTERMEDIOS
Los códigos intermedios, octal y hexadecimal, se fundamentan en la facilidad de transformar un número en base 2 a otra base que sea una potencia de dos: 2²= 4, 2³= 8, etc.
Generalmente se utilizan el sistema de numeración en base 8 (u octal) y en base 16 (o hexadecimal).
-
BASE OCTAL
La base de este sistema de numeración es b = 8 y el conjunto de símbolos {0, 1, 2, 3, 4, 5, 6, 7}.
Para transformar un número binario a octal se hacen grupos de tres cifras binarias a partir del punto decimal hacia la izquierda y hacia la derecha. Posteriormente se efectúa directamente la conversión a octal de cada grupo individual, teniendo en cuenta la siguiente tabla:
Decimal/Octal | Binario |
0 | 000 |
1 | 001 |
2 | 010 |
3 | 011 |
4 | 100 |
5 | 101 |
6 | 110 |
7 | 111 |
Ejemplo:
10 001 101 100,110 10= 2154,64
Para pasar de octal a binario convertimos individualmente a binario cada cifra octal, manteniendo el orden del número original:
Ejemplo:
537,24= 101 011 111,010 100
Para pasar de octal a decimal utilizamos la expresión que ya conocemos, con base 8.
Ejemplo:
1367,25= 1x8³+ 3x8² 6x8¹+ 7x8º+ 2x8¹+ 5x8² = 512 + 192 + 48 + 47 + 7 + 0,25 + 0,078125 = 759,328125
Para pasar de decimal a octal hacemos divisiones y multiplicaciones sucesivas como en el caso del sistema binario, pero teniendo en cuenta que en este caso la base es 8.
Ejemplo:
760,33= 1370,2507
760 8
40 95 8
0 15 11 8
7 3 1
-
BASE HEXADECIMAL
Para representar un número en base hexadecimal b = 16, necesitamos disponer de un conjunto o alfabeto de 16 símbolos. Se suele utilizar el siguiente conjunto:
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}
Siendo la tabla de equivalencias la siguiente:
Hexadecimal | Binario | Decimal |
0 | 0000 | 0 |
1 | 0001 | 1 |
2 | 0010 | 2 |
3 | 0011 | 3 |
4 | 0100 | 4 |
5 | 0101 | 5 |
6 | 0110 | 6 |
7 | 0111 | 7 |
8 | 1000 | 8 |
9 | 1001 | 9 |
A | 1010 | 10 |
B | 1011 | 11 |
C | 1100 | 12 |
D | 1101 | 13 |
E | 1110 | 14 |
F | 1111 | 15 |
Para pasar de binario a hexadecimal, como b = 16 =2, y viceversa, se pueden hacer las conversiones de igual forma que con el sistema octal. En este caso utilizaremos grupos de 4 bits en lugar de 3 bits.
Ejemplo:
010 0101 1101 1111, 1011 101= 25DF,BA
Para pasar de hexadecimal a decimal, utilizamos la misma expresión que en los casos anteriores.
Ejemplo:
A798C,1E= 10x16+ 7x16+ 9x16+ 8x16+ 12x16+ 16+ 14x16= 655360 + 28672 + 2304 + 128 + 12 + 0,0625 + 0,0546875 = 686476,11
Para pasar de decimal a hexadecimal, hacemos multiplicaciones y divisiones sucesivas de la forma que conocemos, teniendo en cuenta que la base es 16.
Ejemplo:
4573,79= 11DD,CA3D
4573 16
137 285 16
093 115 17 16
13 13 1 1
6 - CÓDIGOS DE ENTRADA/SALIDA: BCD, EBCDIC, ASCII
Ya hemos visto que el ordenador utiliza combinaciones de bits para representar los caracteres. Codifica la información en la Entrada y la decodifica en la Salida para que nosotros podamos entenderla.
En definitiva, un código externo o código de Entrada/Salida no es más que una correspondencia entre los conjuntos:
" {0, 1, 2, …, 9, A, B, …, Z, a, b, …, z, *, /, $, …}
" {0, 1}
Supongamos que solamente utilizamos dos bits para codificar los caracteres, ¿cuántas combinaciones puedo realizar?:
0 0
0…1
1…0
1…1
Con tres bits se pueden hacer 8 = 2³ combinaciones distintas, podré representar 8 caracteres. Con n bits podré codificar 2 símbolos, y por lo tanto sólo podrá estar formado por un conjunto de m = 2 elementos
-
CÓDIGO BCD DE INTERCAMBIO NORMALIZADO ( Standard Bynary Coded Decimal Interchange Code)
Este código utiliza 6 bits, con lo que con él se pueden representar m = 64 caracteres. A veces se añade a su izquierda un bit adicional para verificar posibles errores en la transmisión o grabación del código, de forma que cada carácter queda representado por n = 7 bits.
Las cuatro posiciones de la derecha se denominan bits de posición. Para los caracteres numéricos del 1 al 9, el código de los bits de posición coincide con la representación en binario natural de dichos números, y para el 0 coincide con la representación del 10. Los dos siguientes bits se denominan bits de zona, siendo estos 00 para los caracteres numéricos. El último bit, que es un bit opcional, es el bit de verificación.
-
CÓDIGO EBCDIC (Extended Binary Coded Decimal Interchange Code)
Este código utiliza 8 bits para representar cada carácter, por lo tanto se pueden codificar hasta m = 256 símbolos distintos, incluyendo mayúsculas y minúsculas y mayor número de caracteres especiales.
También es posible codificar caracteres de control con las combinaciones que empiezan por 00, por ejemplo los que suministran órdenes o señales de control para impresoras, pantallas o para coordinar las transmisiones de información.
Las cuatro posiciones de la derecha se denominan bits de posición y las cuatro de la izquierda bits de zona. Y se establece lo siguiente:
-
Para los dos bits que están más a la izquierda:
-
00 Caracteres de control y sin usar.
-
01 Caracteres especiales.
-
10 Caracteres alfabéticos en minúsculas.
-
11 Caracteres numéricos y alfabéticos en mayúsculas.
-
Para los dos siguientes bits:
-
00 De la A a la I.
-
01 De la J a la R.
-
10 De la S a la Z.
-
11 Numérico.
También van a coincidir los bits de posición, para las 10 cifras decimales, con su representación en binario natural
-
CÓDIGO ASCII (American Standard Code for Information Interchange)
Este código utiliza 7 bits y hoy día es de los más usuales. Se puede decir que la mayor parte de las transmisiones de datos entre dispositivos se realizan en esta codificación. Usualmente también se introduce un bit más para controlar los posibles errores.
7. EFICIENCIA DE UN CÓDIGO
se define como el cociente entre el número de símbolos que representa realmente (m) y el número de símbolos que en total pueden representarse (m'). Es decir, con códigos binarios en los que m' = 2, se tiene que:
r = m/m' = m/2 donde 0 " r " 1 |
Obviamente, cuanto más eficiente sea el código, mayor será r.
Ejemplo: Supongamos que utilizamos el código ASCII, sin bit de verificación, para representar 95 símbolos. La eficiencia de esta codificación será:
r = 95/2= 95/128 = 0,742
Si introducimos un bit adicional, la nueva eficiencia sería r = 95/256 = 0,371.
Un código que es poco eficiente, se dice que es redundante. Se define la REDUNDANCIA como:
R = (1 - r) x 100% |
Ejemplo: En los dos casos del ejemplo anterior
R = (1 - 0,742) = 25,8% sin el bit de control
R = (1 - 0,371) = 62,9% con el bit de control
Se observa que cuanto más eficiente sea un código, menos redundante será.
Sin embargo, a veces las redundancias se introducen deliberadamente para poder detectar posibles errores en la transmisión o grabación de la información. Por ejemplo, si queremos representar 8 símbolos {A, B, C, D, E, F, G, H}, y se hace con un código sin redundancias, se necesitan 3 bits:
ALFABETO | CÓDIGO I | CÓDIGO II |
A | 000 | 0000 |
B | 001 | 0001 |
C | 010 | 0010 |
D | 011 | 0011 |
E | 100 | 0100 |
F | 101 | 0101 |
G | 110 | 0110 |
H | 111 | 0111 |
Con el código I, si varía alguno de los bits obtengo otro símbolo del mismo alfabeto, que considerado aisladamente no podría ser detectado como erróneo.
Sin embargo, si utilizamos un código redundante como el II, existirían posibilidades de detectar errores. Si en la H, por un error, se cambiase el primer bit, podría detectarse el error porque no correspondería a ninguno de los símbolos posibles de nuestro alfabeto (1111 no está en la tabla).
La introducción de las redundancias no se hace de forma arbitraria, sino de acuerdo con algún algoritmo predeterminado. De esta forma, los códigos pueden ser verificados automáticamente por circuitos de la computadora.
Uno de estos algoritmos añade al código inicial de cada carácter un nuevo bit denominado BIT DE PARIDAD. Existen dos criterios para introducir este bit:
-
BIT DE PARIDAD, CRITERIO PAR: se añade un bit (0 ó 1) de forma tal que el número total de unos del código que resulte sea par.
-
BIT DE PARIDAD, CRITERIO IMPAR: se añade un bit (0 ó 1) de forma tal que el número total de unos del código que resulte sea impar.
El bit de paridad se introduce antes de transmitir o grabar la información (hay circuitos generadores de bits de paridad y circuitos comprobadores del bit de paridad). Si algún bit cambiase, se detectaría el error al recibir o leer la información, ya que el número de unos dejaría de ser par o impar (según el criterio). Obviamente, si cambiasen dos bits simultáneamente, el error no se detectaría, aunque es muy poco probable que esto ocurra.
Otro sistema de introducir redundancia para poder detectar errores es el de VERIFICACIÓN DE CUENTA FIJA. En este tipo de sistema todos los códigos correspondientes a los caracteres tienen un número fijo de unos y ceros, siendo la posición relativa de los mismos la que determina el carácter a que corresponden. Por ejemplo, si quisiéramos codificar 70 símbolos distintos podríamos utilizar 8 bits de los cuales siempre 4 deben ser unos y los otros 4 ceros. Los circuitos de verificación tendrían que detectar en recepción o lectura si el número de unos (o ceros) de cada carácter coincide con el número prefijado.
8 - REPRESENTACIÓN INTERNA DE LA INFORMACIÓN
En la memoria y el procesador central la información se transmite y procesa en unidades denominadas palabras. Las palabras de memoria son las posiciones en las que está dividida la memoria interna, y cada palabra está formada por un número determinado de bits.
La longitud de las palabras dependerá de la organización o estructura física de la computadora, siendo usuales las siguientes longitudes: 8, 16, 32 y 64 bits. Cada computadora según el modelo, tendrá asignada una longitud de palabra determinada.
Para escribir o leer un dato o instrucción almacenado en la memoria principal se da la dirección de la palabra donde se quiere escribir o leer. La operación de escritura o lectura se efectúa simultáneamente para todos los bits que constituyen una palabra. Es decir, desde el punto de vista del procesador central, los intercambios de información con la memoria se hacen en unidades o bloques denominados palabras y no en caracteres (bytes). Esto quiere decir que toda la información, a la hora de ser procesada por la unidad aritmético-lógica o ser transferida a la memoria principal, debe estructurarse en palabras.
¿Cómo haremos un buen aprovechamiento de la memoria?. La longitud de la palabra debe ser un múltiplo entero del número de bits utilizados para representar un carácter. Así, por ejemplo las computadoras de 8, 16, 32, 64 bits, utilizan códigos de entrada/salida con n = 8 bits, como el EBCDIC y el ASCII con bit de paridad.
- REPRESENTACIÓN INTERNA DE DATOS
Los datos se introducen inicialmente en la computadora según un código de Entrada/Salida. En el caso de los caracteres numéricos, con los que generalmente se realizan operaciones aritméticas, parece que la representación simbólica obtenida con el código de E/S no es la más adecuada para operar.
Por ejemplo, supongamos que queremos operar con el número 326, y nuestro código de E/S es el ASCII con bit de paridad par:
3= 63= 110011
2=62= 110010
6= 66= 110110
326= 0110011 1110010 0110110
Si este número lo representamos en binario:
326= 111000110
Vemos que, por una parte, el número de bits que necesito para representar este valor en binario (9) es mucho menor que el que necesito para representarlo mediante el código ASCII (21); y por otra parte, resulta más adecuado operar con un sistema de numeración convencional (que para eso se ideó, para facilitar los cálculos) que con el código de E/S.
Por ello, y teniendo en cuenta que la unidad aritmético-lógica utiliza las “palabras” para operar, se va a realizar una conversión de las notaciones de la representación del código de E/S a otra notación que vamos a denominar REPRESENTACIÓN INTERNA.
¿De qué va a depender esta representación interna?:
-
De la computadora.
-
Del lenguaje de programación utilizado.
-
Del uso que el programador desee hacer con los datos.
Por ejemplo, estamos realizando un programa en un lenguaje determinado. Podemos tener constantes, parámetros o instrucciones. Al introducir el programa por ejemplo desde el teclado, todos los caracteres se graban según el código E/S. Posteriormente, según las reglas del lenguaje de programación y las especificaciones del programador, se realiza una reconversión de la representación de los datos.
Los datos incluidos en el programa se reestructuran cuando se traduce el programa, y los datos que el programa lee se reconvierten en el momento de ejecutarse las instrucciones, que nos indican claramente el tipo de representación deseada.
¿Qué tipos de datos podemos representar internamente?. Dependerá del lenguaje de programación que estemos utilizando. Por ejemplo los lenguajes para realizar cálculos matemáticos suelen contemplar datos de tipo:
-
Entero.
-
Real simple precisión.
-
Real doble precisión.
-
Complejo simple precisión.
-
Complejo doble precisión.
-
Lógico.
-
Carácter.
Los datos de tipo carácter no se reconvierten, pues con ellos no tenemos que operar. Según el código de E/S, se representan las cadenas de caracteres ensambladas en las palabras del ordenador.
Los datos complejos se representan como parejas de números reales almacenados en posiciones consecutivas de memoria, es decir, son un caso particular de números reales.
La representación de los datos de tipo lógico dependerá del tipo de computadora con la que trabajemos.
Se distinguen dos formas de representar en el interior de la computadora los datos de tipo entero:
-
Representación binaria.
-
Representación de dígitos decimales codificados en binario o representación BCD.
-
DATOS DE TIPO ENTERO REPRESENTADOS EN BINARIO
Los datos de tipo entero se denominan también datos de punto fijo o coma fija.
Existen dos alternativas de representación de datos de tipo entero en binario: sin signo y con signo.
a - Enteros sin signo: En este caso todos los bits del dato representan su valor absoluto. Con 8 bits podré representar del 0 al 255.
b - Enteros con signo.
El signo se representa en el bit situado más a la izquierda de la palabra. Si el número es positivo el bit será 0, y si el número es negativo el bit será uno.
Si el número es positivo, a continuación del bit del signo se almacena directamente el número en binario.
Si el número es negativo, dependerá del tipo de computadora que se almacene el número en binario, el complemento a 1 ó el complemento a 2. Es decir, la representación se puede hacer en SIGNO Y MAGNITUD, en COMPLEMENTO A 1 o en COMPLEMENTO A 2.
Una computadora utiliza el siguiente organigrama para transformar un número N de su representación en decimal a la representación interna:
Ejemplo: Supongamos que en una computadora con palabras de 8 bits y que utiliza la notación del complemento a 2 para los negativos, queremos conocer la representación interna de -37 en la máquina.
Paso 1: representamos el número en el sistema de numeración hexadecimal.
37= 25
Paso 2: el número es negativo, por lo tanto calculamos el complemento a la base menos uno del valor numérico calculado en el paso 1.
FF
- 25
DA
Paso 3: la computadora utiliza la representación de los valores negativos en complemento a 2, en ese caso le sumo 1 al resultado obtenido en el paso 2.
DA
+ 1
DB
Paso 4: pasamos a la representación en binario natural el número calculado en el paso 3.
11011011
De igual forma, puedo obtener la representación externa de un número entero a partir de su representación interna, según el siguiente algoritmo:
Ejemplo: supongamos que tenemos una computadora con palabras de 8 bits, y que utiliza el complemento a 2 para representar internamente los números negativos. ¿Cuál es la representación externa de 10101110?.
Paso 1: representamos este conjunto de bits en el sistema de numeración hexadecimal.
10101110= AE
Paso 2: el bit que está más a la izquierda es 1, por lo tanto el número es negativo; calculo el complemento a la base menos uno.
FF
- AE
51
Paso 3: sumo uno al resultado porque utilizamos el complemento a 2.
51
+ 1
52
Paso 4: paso el resultado a decimal.
52= 5x16 + 2 = 80 + 2 = 82(No debemos olvidar que el número es negativo: - 82)
9. DATOS DE TIPO REAL
Cuando se opera con números muy grandes se suele utilizar, al igual que hace la computadora con todos los números reales, la notación exponencial. Con esta notación, por ejemplo el número 13257,3285 puede representarse, entre otras, de las siguientes formas:
13257,3285 = 13257,3285x10= 1,32573285x10= 0,132573285x10= 132573285x10= 13257328500x10
Es decir, todo número se puede expresar de la forma:
N = m x B
Se puede transformar la representación de N conservando su valor, cambiando el exponente e, y reajustando adecuadamente la mantisa m: si aumentamos o disminuimos en una unidad el exponente, debemos dividir o multiplicar la mantisa por B.
Este tipo de representación de los números se denomina notación exponencial, aunque también recibe otros nombres como notación científica, o notación en punto o coma flotante.
Para representar en las computadoras los datos de tipo real se utiliza la notación exponencial, siguiéndose tradicionalmente las siguientes convenciones:
El exponente siempre se ajusta de forma que la parte entera del número sea cero, es decir, se va a representar la parte fraccionaria o mantisa del número.
Por ejemplo, si la máquina trabajase con el sistema decimal: 13257,3285 = 0,13257328x10.
La base del exponente, B, está predeterminada, por lo que solamente será necesario almacenar m y e (mantisa y exponente).
Se utiliza un bit para representar el signo (s) del número, cierto número fijo de bits (n) para representar el exponente y otro cierto número fijo de bits (n) para representar la parte fraccionaria o mantisa del número.
Es decir, si n es el número total de bits utilizados para representar el número real, se verifica:
n= n+ n+ 1
Los números n, n, n dependerán de la computadora o del traductor del lenguaje utilizado.
El orden para representar al número será signo, exponente, mantisa:
s e m
El bit de signo es cero para los números positivos y uno para los negativos. La mantisa se representa por el valor binario natural correspondiente.
El exponente se almacena sumándole siempre el valor C = 2. Es decir, se almacena en “exceso a C”.
El exponente así representado se denomina característica (c):
c = C + e = 2+ e
De esta forma, en los bits reservados al exponente se pueden incluir exponentes positivos o negativos sin utilizar un bit de signo.
Ejemplo: supongamos que el exponente se almacena en 7 bits, n= 7. En este caso la representación del exponente se obtiene sumándole el valor C = 2= 2= 64.
Exponente | Característica | Característica almacenada |
0 | 64 + 0 = 64 | 100 0000 |
+2 | 64 + 2 = 66 | 100 0010 |
+63 | 64 + 63 = 127 | 111 1111 |
-1 | 64 - 1 = 63 | 011 1111 |
-64 | 64 - 64 = 0 | 000 0000 |
Si observamos los bits que finalmente se almacenan, podemos considerar que el bit más a la izquierda del exponente es el signo (1 si es positivo, 0 si es negativo) y los exponentes negativos se expresan en complemento a 2.
Las bases de exponente que se suelen utilizar son B = 2 ó B = 16.
En resumen, si un número tiene la representación interna s c m , su valor será:
N = (-1) [0,m] x B
Ejemplo: trabajamos con una computadora en la que n= 9 y B = 16, obtener el valor decimal correspondiente a las siguientes representaciones internas de números en coma flotante:
010111100
s = 0
c = 1011
m = 1100
C = 2= 2 = 8= 1000
e = 1011 - 1000 = 0011= 3
m = 0,1100= 2+ 2= 0,5 + 0,25 = 0,75
N = 0,75 x 16= 0,75 x 4.096 = 3.072
101110011
s = 1
c = 0111
m = 1100
C = 2= 2 = 8= 1000
e = 1011 - 1000 = - 1
m = 0,0011= 2+ 2= 0,1875
N = (-1)x [0,1875] x 16= - 0,01171875
Si B = 2, aumentar una unidad al exponente equivale a dividir por dos la mantisa, es decir, desplazar el punto decimal una posición a la izquierda.
Si B = 16, aumentar una unidad al exponente equivale a dividir por 16 la mantisa, es decir, desplazar el punto decimal cuatro posiciones a la izquierda.
Ejemplo:
0,0010110 x 2= 0,1011000 x 2
0,00000101 x 16= 0,01010000 x 16
0,1011010 x 2= 0,0101101 x 2
0,101010000 x 16= 0,000010101 x 16
Al transformarse un número real a su representación interna y después de cualquier tipo de operación, se reajustan el exponente y la mantisa de forma tal que la cifra más significativa no nula de la mantisa esté lo mas próxima posible al comienzo de la mantisa. Esta operación se denomina normalización.
REPRESENTACIÓN EN SIMPLE PRECISIÓN Y DOBLE PRECISIÓN
Son las dos posibilidades de representar los números reales. En doble precisión se suele utilizar el doble número de bits que en simple precisión, aumentando considerablemente el número de bits dedicados a la mantisa, mejorándose por tanto la precisión de la representación y de los cálculos.
Hay computadoras que incluso admiten precisión ampliada o cuádruple precisión.
En una computadora con palabras de 16 bits, la representación interna de los datos de tipo real será:
0 | 1 | 7 | 8 | 15 | palabras | |
s | c | m | 1 | |||
m | 2 | |||||
16 | 31 |
SIMPLE PRECISIÓN
0 | 1 | 7 | 8 | 15 | palabras | |
s | c | m | 1 | |||
m | 2 | |||||
m | 3 | |||||
m | 4 | |||||
48 | 63 |
DOBLE PRECISIÓN
En una computadora con palabras de 32 bits, la representación interna de los datos de tipo real será:
0 | 1 | 7 | 8 | 32 | palabra | |
s | c | m | 1 |
SIMPLE PRECISIÓN
0 | 1 | 7 | 8 | 31 | palabras | |
s | c | m | 1 | |||
m | 2 | |||||
32 | 63 |
DOBLE PRECISIÓN
COMPUTADORA
ENTRADAS
Datos de entrada e
instrucciones
Datos de salida o
resultados
SALIDAS
Añadimos un cero a la izquierda
Añadimos un cero a la derecha
2²
1101,01 101
101 10,101...
00110
101
00110
101
001
FIN
N)i N)H
positivo
complemento a 2
N)H
N)H +1
complemento a 1
notación
¿
N FF FF - N
negativo
Signo
N
N N)10
INICIO
FIN
N )10 N)H
positivo
complemento a 2
N
N+1
complemento a 1
notación
¿
N FF FF - N
negativo
N (0)
7
N N
INICIO
Descargar
Enviado por: | Matematica |
Idioma: | castellano |
País: | España |