Está en la página 1de 38

Representacin de la informacin

1. Introduccin. El sistema binario



Una de las peores trabas en el estudio de los fundamentos de un computador digital
(desde el punto de vista del alumno que estudia la asignatura, por supuesto) es que la
informacin solo se puede procesar y almacenar en binario (en un idioma con dos
smbolos o dgitos: el 0 y el 1). En particular, un computador solo reconoce la
informacin que hay en un determinado elemento de un circuito, en la forma del
potencial elctrico que posee. En la mayora de los casos solo hay dos potenciales
reconocidos por el hardware (p.e., +0V y +5V), y se asocia uno de ellos al cero y el otro
al uno. A partir de ah, la combinacin de dgitos binarios (o su acrnimo bit) genera
mayor cantidad de informacin. Por ejemplo, 00010111 puede significar el dato 23, y
0101001010 podra ser la forma de una instruccin.
En este tema aprenderemos a "hablar" en el idioma binario, y analizaremos la forma en
la que se codifica toda la informacin que manipula el computador.
Qu es informacin?
Para el computador, la informacin son las instrucciones y los datos sobre los que
operan las instrucciones. Las instrucciones en general son tareas muy simples que se
realizan sobre los datos. Como ejemplo, una instruccin puede copiar la informacin de
un lugar del computador a otro. A veces, se realiza una operacin con varios datos
almacenados, guardando a su vez el resultado en algn lugar, pero siempre, en binario.
Almacn de la informacin.
Como vemos, la informacin (datos o instrucciones) se almacena en algn lugar del
computador. Normalmente esto se hace en memoria o en los registros. Cada registro o
posicin de memoria contiene un nmero de bits predeterminado (entre 8 y 64,
normalmente), y fsicamente, cada bit es un elemento de un circuito que permite
conservar un determinado potencial (imagnelo en la forma de un condensador, en el
que podemos mantener (1) o eliminar (0) una diferencia de potencial entre sus bornes).
Transporte de la informacin.
Para desplazar la informacin por el computador, se utilizan los buses y seales, que no
son ms que cables que interconectan los almacenes de informacin. El potencial de
un cable (seal) identifica el bit que transporta, mientras que un conjunto de cables
(bus) transporta el dato o la instruccin que representan la secuencia de seales. La
informacin puede navegar por los circuitos de diferentes formas gracias a la existencia
de conmutadores, que se encuentran en dos posibles estados: abierto y cerrado:
En la prctica, los conmutadores son accionados por otras seales. Para ello, se
utilizan transistores.

Procesamiento de la informacin.
Para que uno o varios datos puedan ser procesados, o incluso para que dichos datos
puedan ser dirigidos de forma correcta a su destino, es necesario introducir unos
elementos adicionales, que se conocen como puertas lgicas. Las puertas lgicas son
circuitos muy elementales (constituidos por unos pocos transistores) que permiten
realizar operaciones muy simples con los bits. Aunque un curso previo sobre sistemas
electrnicos digitales debe introducir al alumno en los circuitos lgicos, recordamos
brevemente algunos aspectos importantes:

Puertas AND, OR y NOT.
Las puertas lgicas son dispositivos capaces de manipular la informacin (bits).
Constan de una o varias seales de entrada de informacin, y producen una seal de
salida, que depende exclusivamente de la combinacin de seales de entrada. Las ms
comunes son las puertas AND, OR y NOT. Otras puertas muy utilizadas son las puertas
XOR y NAND. En la siguiente tabla se muestran los smbolos que la representan y la
forma en la que procesan la informacin de entrada:











Nombre Diseo Entradas Salida
OR 0 0
0 1
1 0
1 1
0
1
1
1
AND
0 0
0 1
1 0
1 1

0
0
0
1
NAND


0 0
0 1
1 0
1 1

1
1
1
0
XOR


0 0
0 1
1 0
1 1

0
1
1
0

NOT

0
1
1
0
Como se puede observar, el funcionamiento de la puerta AND (el comportamiento de la
salida, en funcin de los valores de entrada) es similar al del siguiente circuito, en el que
los interruptores realizan la funcin de entradas y la luz es la salida:


La implementacin de las puertas lgicas se realiza con transistores, que al fin y al cabo,
no son ms que interruptores activados mediante impulsos elctricos (la mano que
enciende o apaga el interruptor es una seal elctrica.
Combinacin de puertas.
La puertas lgicas pueden combinarse entre s, conectando las salidas de unas puertas
con las entradas de otras (tambin entradas con entradas, pero nunca salidas con salidas)
A veces, a una cierta combinacin de puertas se le asigna un nombre y se considera
como una nueva puerta: Ejemplo: La puerta XOR se puede implementar combinando
puertas AND, OR y NOT:




Circuitos bsicos: MUX y D-MUX. Ciertas combinaciones de puertas producen
circuitos que tienen una funcin muy clara. Es el caso de multiplexores (MUX) y
demultiplexores (D-MUX). El primero de los circuitos permite redirigir un dato en la
nica a entrada a una (entre varias) salidas. Tiene puntos de control que indican (en
cdigo binario) cual es la salida elegida:







c
e1 e2
s
El demultiplexor selecciona para la nica salida, una entre varias entradas. Tambin
tiene puntos de control para seleccionar la entrada:






Codificadores y decodificadores: Son otros ejemplos de circuitos lgicos. En general un
codificador tiene ms entradas que salidas. El decodificador, en cambio, tiene ms
salidas que entradas. Un ejemplo de este ltimo es el denominado decodificador en
lnea. Tiene n entradas y 2
n
salidas. Solo una de las slidas est en estado 1: aquella
cuya posicin coincide con la codificacin en binario del dato de la entrada.

Un circuito secuencial bsico: el biestable (o Flip-Flop).
Muchos de los circuitos lgicos obtenidos por combinacin de puertas tienen, como
caracterstica comn, la ausencia de capacidad de recordar para ms tarde en el
tiempo, el potencial de las seales que contiene (su estado, 0 o 1). Esto se debe a que
dicho estado depende exclusivamente del valor que hay en las entradas del circuito:
Cuando cambia la informacin de la entrada, se cambia la de salida y no memoriza
nada. Este tipo de circuitos se conoce como combinacionales. En cambio, un circuito
secuencial es aquel en el que la salida no depende solo de la entrada, sino tambin, en
cierta medida, de las situaciones anteriores en las entradas.

Podemos imaginar que el sistema formado por la antena receptora y nuestra televisin
es puramente combinacional (lo que se ve en la tele solo depende de lo que se recibe
por la antena). Cuando compramos un grabador de tdt, convertimos nuestro sistema en
secuencial, ya que lo que vemos en la televisin depende (segn el momento) de lo que
llega por la antena, o de lo que ha entrado al sistema anteriormente (si reproduzco una
grabacin previamente realizada). El grabador le aporta a nuestro sistema una
capacidad de memorizar informacin, para facilitarla posteriormente.


c
e
s1 s2
Para que un conjunto de puertas pueda recordar informacin anterior, es necesario que
salidas y entradas de puertas se conecten de forma que se genere un ciclo (lazo de
realimentacin). La existencia de este lazo permite que cierto estado del circuito quede
encerrado o lo que es equivalente: memorizado.







Imagine que el circuito de la figura tiene en las entradas los valores R=1 y S=1, y que el
lazo de realimentacin Q contiene el valor 0. Para comprobar que el valor de Q es un
valor memorizado, que depende de lo acontecido en el pasado, y no slo de las
entradas R y S, prueba a colocar momentneamente el valor de R a 0, y tras dejar que
alcance un estadio estable, vulvalo despus a 1.

Seal Valor Antiguo Valor instantneo Valor Nuevo


R 1 0 1
S 1 1 1
Q 1 0 0

Se observa que la salida es distinta, a pesar de que los dos valores de las entradas se
encuentran en la misma situacin que la inicial. Gracias a los circuitos de
retroalimetacin, el biestable recuerda, con Q=0, que alguna vez tuvo un cero en su
entrada R (reset). Y de la misma forma, podra recordar con el valor Q=1, que ha tenido
un cero en su entrada S (set).
Los biestables representan un claro ejemplo de circuito secuencial, capacitado para
almacenar un bit de informacin. En muchos casos, se utilizan como bloque bsico en la
construccin de registros y memorias, que en definitiva, no son ms que conjuntos de
celdas, agrupadas en palabras o secuencia de palabras (respectivamente), para el
almacenamiento de una mayor cantidad de informacin.

R
S
Q
Representacin de la Informacin
Problemas directos e inversos. Contexto
Antes de estudiar a fondo la representacin de la informacin, es necesario aclarar
algunos conceptos. En primer lugar, dejemos claro que representar la informacin
significa traducirla a una cadena binaria. En consecuencia, el primer tipo de problema
planteado (que podramos denominar problema directo), consiste en realizar la
traduccin de cada concepto a un sistema binario siguiendo unas reglas especficas.
El segundo tipo de problemas consistira en realizar la operacin inversa, es decir, en
traducir una cadena binaria al concepto que representa.
Sin embargo, una de las caractersticas de la informacin del computador es que intenta
ser lo ms econmica posible, y una de las formas de conseguirlo es mediante la
ausencia, en la informacin codificada, de cualquier indicacin que especifique el tipo
de informacin guardada o el formato que se ha utilizado para ello. As, para escribir un
determinado valor en binario (p.e., el nmero natural 2), podramos utilizar un
determinado criterio y obtener esta cadena: 0010. Pero en la cadena no est indicado
que represente un nmero, ni que sea natural, ni el criterio usado para codificar la
informacin.
Al codificar con texto escrito, ocurre lo mismo. Nadie redactara un texto de esta
forma: "sustantivo_castellano_ropa_camiseta adjetivo_castellano_color_naranja". En
su lugar, escribimos "camiseta naranja", "naranja sin hueso", "amena es orange", u
"orange juice".
Dicho de otra forma, el problema inverso es, fuera de contexto, irresoluble, ya que una
secuencia binaria podra ser, en principio, casi cualquier cosa. Tampoco sabramos que
representa el trmino orange, sin su contexto.
Desde el punto de vista acadmico, los problemas inversos deben ser bien planteados en
su contexto. As, podramos averiguar qu es 0010, si se indica adems que se trata de
un natural codificado con un cierto criterio (por ejemplo, el binario natural.
Desde el punto de vista de la mquina, el contexto ser tambin imprescindible, y as, el
computador sabr buscar instrucciones donde se almacenan instrucciones, y datos donde
hay datos.
En la siguiente seccin, analizaremos los distintos formatos de representacin de datos e
instrucciones. Para ello, introduciremos una clasificacin previa de la informacin como
eje constructivo.
2. Clasificacin de la Informacin
La informacin que maneja el computador se podra organizar mediante el siguiente
diagrama:
1. Datos
1. Datos numricos
1. Naturales
2. Enteros
3. Flotantes
2. Datos no numricos o alfanumricos
1. letras (a,F,W)
2. dgitos decimales (0, 1, 2... como smbolos que no representan un
valor numrico)
3. otros smbolos (%, &, $...)
4. smbolos de control ("cambio de linea", "suprimir", ...)
2. Instrucciones
1. de movimiento de datos
2. aritmtico-lgicas
3. de control de programa
Esta es slo una de las muchas formas de organizar la informacin, pero en cualquier
caso representa el orden ms lgico de afrontar el anlisis, por la fuerte dependencia que
existe entre los distintos formatos de representacin.
2.1 Representacin de datos
2.1.1 Nmeros naturales
Aunque hay mltiples formas de representar (en binario) a los nmeros naturales, el
conocido como binario natural es, sin duda alguna, el ms utilizado. Este sera el
formato equivalente al que habitualmente utilizamos para representar los nmeros en
base 10. Volvamos unos aos atrs y realicemos una cuenta creciente:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,... 99, 100
Observe el procedimiento de representacin. Disponemos de un alfabeto de smbolos
(del 0 al 9) y los hemos utilizado (en orden) para contar... mientras hemos podido. El
peso de cada dgito es diferente, y crece de uno en uno hasta llegar al "9" (el que ms
pesa). A partir de ah (para la decena), hemos necesitado ampliar el nmero de
smbolos, y al smbolo aadido le hemos dado un peso igual al de la base empleada. Es
decir, al 2 dgito empezando por la derecha, le damos un peso equivalente al del digito
utilizado, pero medido en "decenas", en lugar de unidades. As, la cadena 23
representara 2 decenas y 3 unidades. Y as hasta el 99, a partir del cual aadiremos
centenas.
Todo esto es obvio, y constituye un sistema de representacin que podramos calificar
como casi universal, si se extendiera a cualquier base.
En el caso que nos atae (la base binaria). El procedimiento es idntico, pero con una
circunstancia un poco especial. El nmero de dgitos que se emplea es el ms pequeo
posible, y en consecuencia, todo sucede mucho ms rpido:
Contemos del 0 al 4 (entindanse el 0 y el 4 de forma abstracta, y no por el smbolo
utilizado en base 10) :
0, 1 (agotados los dgitos disponibles), 10, 11 (agotados los dgitos en las dos
posiciones), 100
Observe el alumno que el peso de los dgitos es ahora de unidades, pares, cudruplos,
ctuplos, etc...
La discusin precedente puede parecer excesivamente elemental para un curso de
Ingeniera, pero no he querido saltrmela, dada la tremenda importancia de este formato
de representacin. Prcticamente todos los mtodos de representacin que usa un
computador actual (enteros, flotantes, direcciones, nombres de registros, etc.) estn
basados en el sistema binario natural,
Este sistema de representacin es un ejemplo claro de lo que se conoce como sistemas
posicionales, en los que el peso de cada dgito depende de la posicin que ocupa. En
realidad, el dgito X-simo de una cierta base, en la posicin N-sima (empezando a
contar desde 0 por la derecha) tendra exactamente un peso X B
N
(piense en el dgito 2,
del nmero decimal 23, que tendra el peso equivalente a dos decenas).
En consecuencia, el primer dgito de cada sistema (casi siempre conocido como 0) no
tiene peso alguno, est donde est. Y tambin se obtiene la conclusin de que los ceros
a la izquierda de cualquier dgito no-nulo no afectan a la representacin, ya que no
alteran el nmero de orden de los dgitos no nulos.
Contemos, por fin, del 0 al 15:
0000, 0001, 0010, 0011,
0100, 0101, 0110, 0111,
1000, 1001, 1010, 1011,
1100, 1101, 1110, 1111,
Como ver el alumno, he completado con ceros a la izquierda, hasta utilizar siempre
cuatro dgitos. Esto no lo he hecho exclusivamente por ser elegancia. Hay otra razn.

Cualquier dato representado en binario est destinado a ser almacenado en algn
lugar del computador, y por tanto, tiene preestablecido un tamao (en bits). En
consecuencia, cada vez que se realice una representacin binaria, deber
indicarse previamente el nmero de bits que se deben utilizar.
En resumen:
El peso de cada dgito depende de su valor d (0, 1) y su posicin i
El peso de cada dgito es di 2
i

El nmero representado es N=d
i
2
i



Ejemplo: Averiguar qu valor representa la cadena binaria natural 010101


dgito 0 1 0 1 0 1

posicin 5 4 3 2 1 0


El nmero es 0 32+1 16+0 8+1 4+0 2+1 1 = 21


Para resolver el problema directo, es fcil demostrar, a partir de la frmula N=d
i
2
i

que cada dgito se puede obtener mediante el siguiente algoritmo:


for i=0 to N-1
d
i
= resto(N/base)
N= cociente(N/base)
end


Vemoslo con un ejemplo, que represente 23 en binario natural (BN):


23: 2 = 11, resto 1
11: 2 = 5, resto 1
5 : 2 = 2, resto 1
2 : 2 = 1, resto 0
1 : 2 = 0, resto 1
0 : 2 = 0, resto 0
0 : 2 = 0, resto 0
0 : 2 = 0, resto 0

(y as hasta completar la longitud de la cadena).


solucin: BN
8
(23)= 00010111

(Obsrvese el subndice 8 que indica la longitud de la cadena).


Rango de representacin. Se denomina rango a la distancia entre el nmero ms
grande y el ms pequeo que se pueden representar en un determinado formato. En
Binario Natural, el rango representable con n bits es:

Rango(BNn)={0,2
n
-1}

La manipulacin con soltura de los nmeros en binario natural es imprescindible para
cualquier persona que se quiera dedicar en cuerpo y alma a la informtica, y por
supuesto as debe ser tambin para el alumno que desee finalizar satisfactoriamente este
curso. Para ayudar a conseguir este objetivo, indico a continuacin algunos trucos casi
imprescindibles para el manejo del sistema binario natural:
Los ceros a la izquierda no tienen peso: 001100 equivale a 1100
Cualquier nmero en la forma 100000 es una potencia de 2 (en base 10 sera
una potencia de 10, evidente, no?)
Cualquier nmero en la forma 111111 es una potencia de 2, menos 1 (en base
10, tambin existe una sentencia equivalente)
Del 0 al 15 deben memorizarse (0000 a 1111)
1K= 1024 = 210 =10000000000 (1 seguido de 10 ceros)
1Mega= 1048576 = 220 =100000000000000000000 (20 ceros)
1Giga= 1024 = 230 =10000000000000000....000000 (30 ceros)
Todos los impares terminan en 1, y en cero los pares
Si A=00010101 termina en 01, entonces A mdulo 4 es 1 (01)
Si A=00010101 termina en 101, entonces A mdulo 8 es 5 (101)
Antes de continuar, plantear un problema de simple resolucin: En un torneo de tenis,
por el sistema de eliminatorias, participan 1024 jugadores. Cuntos partidos hay que
programar, incluida la final?


No hacen falta muchos conocimientos para encontrar la solucin:


512 partidos en primera ronda + 256 partidos en segunda ronda + 128 en tercera
ronda + 64 partidos en la cuarta + 32 partidos + 16 + 8 de partidos de octavos + 4
cuartos de final + 2 semifinales + final = 1023

Sin embargo, este es un clsico problema que tiene una resolucin mucho ms simple,
si se hubiera optado por pensar un poco ms antes de aventurarse a dar la solucin:

Si en cada partido se elimina un jugador, y tras la final, hay 1023 eliminados y un solo
ganador: 1023 partidos jugados


He usado este clsico ejercicio (lase a Martin Gardner) como introduccin a una
ecuacin interesante para el desarrollo de algunas partes de la asignatura:


2
n
1 = 2
n-1
+ 2
n-2
+ 2
n-3
+ ... + 4 +2 + 1


Ejemplo: 1+2+4+8 = 15 = (16 1), o lo que es lo mismo, 1111 = 10000 1


La anterior frmula, muy relacionada con los trucos 2 y 3 anteriormente presentados, es
una de las muchas consecuencias evidentes del formato de representacin posicional.
Hemos pasado toda la vida conviviendo con este tipo de frmulas (o alguien no saba
que 9 + 90 + 900 es 1000 -1 ?), pero al cambiar a binario, nos cuesta un poco ms
reconocer ciertas evidencias. A lo largo del curso se utilizar como estrategia la
comparacin con la base 10, para que al alumno le suponga un menor esfuerzo la
transicin al mundo binario.
Deteccin de errores y bits de paridad
Concepto de distancia Hamming...



Bits de paridad en el cdigo Hamming
Aadir ms bits de paridad para aumentar la distancia del cdigo.
Para un cdigo de 4 bits (d3 d2 d1 d

p1=xor(d3,d1,d0)
p2=xor(d3,d2,d0)
p4=xor(d3,d2,d1)


La palabra se recodifica, ubicando est
significativos): d3 d2 d1 p4 d0 p2 p1

Una vez redefinida la palabra (d3 d2 d1 d0) a la cadena (d3 d2 d1
x6 x5 x4 x3 x2 x1), sta se trasmite, como se muestra en el esquema:


El receptor (lado derecho del esquema) recibe un mensaje
que, en principio, debera ser el mismo que el
errores). No obstante, el receptor desconfa,y calcula los valores de de los bits de
paridad que le corresponden a los bits de datos que se han recibido:
dad en el cdigo Hamming
Aadir ms bits de paridad para aumentar la distancia del cdigo.
Para un cdigo de 4 bits (d3 d2 d1 d0) se aaden 3 bits adicionales:
La palabra se recodifica, ubicando estratgicamente los nuevos bits: (de ms a menos
p4 d0 p2 p1
Una vez redefinida la palabra (d3 d2 d1 d0) a la cadena (d3 d2 d1 p4 d0 p2 p1) = (x7
trasmite, como se muestra en el esquema:
ptor (lado derecho del esquema) recibe un mensaje d3 d2 d1 p4 d0
que, en principio, debera ser el mismo que el retrasmitido (si no se han producido
el receptor desconfa,y calcula los valores de de los bits de
d que le corresponden a los bits de datos que se han recibido:
Aadir ms bits de paridad para aumentar la distancia del cdigo.
(de ms a menos
p4 d0 p2 p1) = (x7

d0 p2 p1
etrasmitido (si no se han producido
el receptor desconfa,y calcula los valores de de los bits de
p1=xor(d3,d1,d0)
p2=xor(d3,d2,d0)
p4=xor(d3,d2,d1)
Y si no coinciden los valores de paridad recibidos (p1, p2, p4) con los que el receptor
recalcula, (p1, p2, p4), entonce
dato ha llegado mal (d3, d2, d1 o d0 no se corresponden con los originales) o bien
porque algn bit de paridad se ha recibido de forma incorrecta (p1, p2 o p4). En
cualquier caso, y aqu es donde est
(bit a bi) entre las cadenas (p4, p2, p1) y (p4, p2, p1) da como resultado una
cadena, que interpretada como Binario Natural, identifica (con un nmero de 7 a 1) el
ndice del dgito errneo de la caden
qu bit es incorrecto, podemos corregirlo, simplemente, invirtiendo su valor.
Vase el siguiente ejemplo con un error de transmisin en el bit x4 (el bit p4).
Obsrvese que el cdigo Hamming presupone q
mximo, ya que en el caso de que se produzcan dos errores, el cdigo lo detectara, pero
sera incapaz de corregirlo correctamente.

2.1.2 Nmeros enteros (naturales con signo)
La representacin de nmeros enteros en
cero), en principio, puede ser tan obvia para el alumno como en el mundo decimal, es
decir, aadiendo un signo al valor absoluto del nmero entero. Sin embargo,
Y si no coinciden los valores de paridad recibidos (p1, p2, p4) con los que el receptor
recalcula, (p1, p2, p4), entonces es que se ha producido un error. Bien porque un
dato ha llegado mal (d3, d2, d1 o d0 no se corresponden con los originales) o bien
porque algn bit de paridad se ha recibido de forma incorrecta (p1, p2 o p4). En
cualquier caso, y aqu es donde est la clave del cdigo Hamming, la operacin XOR
(bit a bi) entre las cadenas (p4, p2, p1) y (p4, p2, p1) da como resultado una
cadena, que interpretada como Binario Natural, identifica (con un nmero de 7 a 1) el
ndice del dgito errneo de la cadena recibida (x7 x6 x5 x4 x3 x2 x1
qu bit es incorrecto, podemos corregirlo, simplemente, invirtiendo su valor.
Vase el siguiente ejemplo con un error de transmisin en el bit x4 (el bit p4).
Obsrvese que el cdigo Hamming presupone que slo se va a producir un error como
mximo, ya que en el caso de que se produzcan dos errores, el cdigo lo detectara, pero
sera incapaz de corregirlo correctamente.
2.1.2 Nmeros enteros (naturales con signo)
La representacin de nmeros enteros en un computador (naturales con signo, ms el
cero), en principio, puede ser tan obvia para el alumno como en el mundo decimal, es
decir, aadiendo un signo al valor absoluto del nmero entero. Sin embargo,
Y si no coinciden los valores de paridad recibidos (p1, p2, p4) con los que el receptor
Bien porque un
dato ha llegado mal (d3, d2, d1 o d0 no se corresponden con los originales) o bien
porque algn bit de paridad se ha recibido de forma incorrecta (p1, p2 o p4). En
la clave del cdigo Hamming, la operacin XOR
(bit a bi) entre las cadenas (p4, p2, p1) y (p4, p2, p1) da como resultado una
cadena, que interpretada como Binario Natural, identifica (con un nmero de 7 a 1) el
). Al saber

Vase el siguiente ejemplo con un error de transmisin en el bit x4 (el bit p4).

ue slo se va a producir un error como
mximo, ya que en el caso de que se produzcan dos errores, el cdigo lo detectara, pero
un computador (naturales con signo, ms el
cero), en principio, puede ser tan obvia para el alumno como en el mundo decimal, es
decir, aadiendo un signo al valor absoluto del nmero entero. Sin embargo,
contradiciendo a Occam, y como veremos a continuacin, no siempre lo ms simple es
lo mejor.
En este apartado, veremos varios formatos de representacin de nmeros con signo:
Signo Magnitud
Negativos en complemento a 1
Negativos en complemento a 2
Representaciones en exceso a X
Pero antes de entrar en los detalles de estos formatos, es necesario introducir un par de
conceptos muy simples.
Complemento a X. Dado un nmero N, se denomina el complemento a X de N al
resultado de la operacin X-N. El complemento a 100 de 18 es 72.
Exceso a X. Dado un nmero N, se denomina exceso a X de N al resultado de la
operacin X+N. El exceso a 100 de 8 es 108.
Signo Magnitud (SM)
En la representacin signo magnitud de n bits, un nmero entero se representa mediante
la concatenacin de un bit que representa el signo del nmero, ms una secuencia que
representa en binario natural la magnitud (el valor absoluto) del nmero N, representado
con n-1 bits. El bit de signo, por convenio, es 0 para los nmeros positivos, y 1 para los
negativos.
Esto es, dado un nmero N entero,
Si N>=0, entonces SM
n
(N) = 0,BN
n-1
(N)
Si N<=0, entonces SM
n
(N) = 1,BN
n-1
(-N)
Como con n-1 bits podremos representar exactamente la mitad de nmeros que con n
bits, por tanto, el rango de representacin, a cada lado del cero, es la mitad que en
formato Binario Natural:
Rango(SM)={-2
n-1
-1,2
n-1
-1}

Observe que existe una doble representacin para el cero, en principio, esto no es un
problema grave, aunque en cierta medida, consumir dos combinaciones para representar
un mismo nmero (1 000...000, 0 000...000) implica que hay menos combinaciones
disponible para el resto de nmeros.


Negativos en complemento a 1
El formato de representacin Signo Magnitud es muy apropiado para la interaccin
hombre-mquina, ya que se asemeja al formato utilizado en nuestra vida cotidiana. Sin
embargo, no resulta apropiado para el trabajo interno del computador, ya que le resulta
mucho ms compleja la ejecucin de operaciones aritmticas respecto a otros formatos
menos intuitivos y que estudiaremos a continuacin.
El formato de representacin denominado de complemento a la base menos uno
consiste en representar cada dgito por su complemento a la base menos uno.
Veamos un simple ejemplo en nuestra base.
Cmo se representa el nmero PI (3,1416) en complemento a 9? Respuesta:
6,8583
Cada dgito, por ejemplo, el 1, ha sido sustituido por su complemento a 9. En
nuestro ejemplo, el 8 (9-1).
En realidad, al nmero PI le hemos calculado el complemento a 9.9999
En base 2, el complemento a 1 de un nmero es una cadena binaria a la que se le
invierten todos sus bits (los 1 cambian por 0 y viceversa). El complemento a 1 de 7
(0111) es 1000.
Estrictamente hablando, cuando decimos complemento a 1 de un nmero de longitud n,
en realidad queremos decir el complemento a 2
n
-1:
El complemento a 1 de (7) 0111 es 8 (1000). Estrictamente hablando, el
complemento a 15 (2
4
-1= 1111) de (7) 0111 es 8 (1000).
El complemento a 9 de 1492 es 8507. Estrictamente hablando, el complemento a
9999 (10
4
-1) de 1492 es 8507.
Una vez comprendida la representacin complemento a la base menos uno, o
complemento a uno (C1), estamos preparados para entender el formato negativos en
complemento a la base menos uno, o negativos en complemento a uno (NC1), que
consiste simplemente en:
Si N>=0, entonces NC1
n
(N) = 0,BN
n-1
(N)
Si N<=0, entonces NC1
n
(N) = 1,C1
n-1
(-N)
Es decir, slo a los nmeros negativos, le calculamos el complemento a 1 de su
magnitud o valor absoluto.
Pero, cul es la razn ltima del formato de representacin de negativos en
complemento a la base menos uno?
Bsicamente, la representacin de un nmero negativo por su complemento a la base
menos 1 facilita las operaciones aritmticas en las que el signo del nmero es
especialmente relevante (suma y resta de nmeros enteros).
Ejemplo: Para una persona que trabajaba en la caja de un supermercado el
pasado siglo (antes de que se utilizaran los euros y las cajas registradoras
modernas), la forma ms rpida de calcular la vuelta de un pago era mediante el
clculo del complemento a nueve. Si la cuenta era de 792 pesetas y se pagaba con
un billete de 1000 pesetas, mentalmente se calculaba el complemento a 9 (207) y
se le aada una peseta (208).
En realidad, este formato apenas se utiliza, aunque se considera un formato intermedio
que facilita la comprensin de otro formato (el denominado negativos en complemento
a 2).
La tabla 2.1 muestra la representacin de los nmeros en NC1, para n=4, en el rango:

Rango(NC1)={-2
n-1
-1,2
n-1
-1}

Observe la doble representacin del cero.
Negativos en complemento a 2
El formato de representacin denominado de complemento a la base consiste en
representar un nmero de longitud n por el complemento a la base elevado a n.
Veamos un simple ejemplo en nuestra base.
Cmo se representa el nmero 1492 en complemento a 10? Respuesta: (10000-
1492) 8508
En la prctica, y como hizo el cajero del supermercado, cada dgito, por ejemplo,
el 1, ha sido sustituido por su complemento a 9 y tras la conversin al
complemento a 9, le hemos sumado 1.
En base 2, el complemento a 2 de un nmero es una cadena binaria a la que se le
invierten todos sus bits (los 1 cambian por 0 y viceversa) y se le suma 1. El
complemento a 2 de 7 (0111) es 1001.
Estrictamente hablando, cuando decimos complemento a 2 de un nmero de longitud n,
en realidad queremos decir el complemento a 2
n
:
El complemento a 2 de (7) 0111 es 9 (1001). Estrictamente hablando, el
complemento a 16 (2
4
) de (7) 0111 es 9 (1001).
El complemento a 10 de 1492 es 8508. Estrictamente hablando, el complemento a
10000 (10
4
) de 1492 es 8508.
Al igual que antes, una vez comprendida la representacin complemento a la base, o
complemento a dos (C2), estamos preparados para entender el formato negativos en
complemento a la base, o negativos en complemento a dos (NC2), que consiste
simplemente en:
Si N>=0, entonces NC2
n
(N) = 0,BN
n-1
(N)
Si N<0, entonces NC2
n
(N) = 1,C2
n-1
(-N)
Es decir, slo a los nmeros negativos, y para almacenarlos, le calculamos el
complemento a 2 de su magnitud o valor absoluto.
Ahora ya estamos preparados para entender el porqu del formato de representacin de
negativos en complemento a la base, con un ejemplo en base 10.
Juan lleva la contabilidad de sus ahorros y deudas (siempre de 2 dgitos
decimales) en el formato negativos en complemento a 100. Para ello, cuando
tiene algo de dinero (por ejemplo, 22 euros) Juan lleva una sonrisa en la boca
(signo positivo) ms los 22 euros de su bolsillo. (Representacin +22)
Sin embargo, cada vez que tiene una deuda (por ejemplo, le debe 43 euros a
Paco) su madre le da un billete de 100 euros porque no le gusta que su hijo sea
un deudor. Entonces Juan llevar 57 euros en el bolsillo ms un rostro serio que
le delata su saldo negativo y le recuera que a pesar de los 57 del bolsillo, le debe
100 a su madre. (La representacin de -43 es -57).
Gracias a esta forma curiosa de manejar las cifras negativas, las operaciones
matemticas en las que el signo est involucrado resultan ms simple para Juans:
Si la abuela de Juan le regala 50 euros, su deuda (-43) se convierte en saldo
positivo, ya que tendr 107 euros en el bolsillo, que le permitirn devolver los
100 a su madre y transformar su cara por el saldo positivo: +7
Pero si la abuela slo le regala 40 euros, tendr 97 en el bolsillo, le sigue
debiendo 100 a su madre (negativo), aunque su deuda real es de slo 3 euros en
valor absoluto.
Y qu pasa cuando acumula dos deudas. Imagine que le debe 43 euros a Paco, y 9
euros a Julin. Para la deuda de Paco, su madre le da 100 euros, y para la de
Julin, es su padre quien le paga 100 euros. De los 148 euros que le sobran en el
bolsillo, le da 100 a su padre, pero an le queda el rostro negativo ms 48 euros
en el bolsillo, que identifican una deuda real de 52 euros (representada -48).
El formato de representacin de negativos en complemento a 2, facilita a los
computadores el clculo de operaciones aritmticas de suma y resta con nmeros con
signo. De hecho, el computador no necesita aprender un algoritmo de la resta similar
al que nosotros aprendimos en 3 de primaria, ya que en realidad, slo necesita aprender
un algoritmo de suma, ms una operacin de clculo de opuesto de un nmero en
formato negativos en complemento a 2.
Truco: A la hora de calcular el complemento a 2 de un nmero negativo de longitud n
(recordemos que en realidad es su complemento a 2
n
), resulta mucho ms prctico
calcular el complemento a 1 para despus sumarle 1 al resultado. As, para representar -
3 con cuatro bits, al valor absoluto (3) en Binario Natural de 3 bits (011), le invertimos
los bits (100) y le aadimos 1 (101). Concatenado con el signo, el resultado es 1101. La
definicin nos obligara a calcular el complemento a 8 de 3 (5), y representarlo en
Binario Natural (101) con el signo (1 101).
Si el nmero es positivo, se indica un bit de signo 0, y la magnitud se guarda en Binario
Natural.
Y para resolver el problema inverso? Qu hacemos? Segn el truco descrito, parece
que debemos hacer lo siguiente. Si el bit de signo es 0, slo debemos tratar el nmero
como si estuviera en Binario Natural.
Si es negativo, podemos restar 1 a la cadena de los n-1 bits de la derecha, e invertir
posteriormente los bits, aunque en la prctica, lo que se hace es invertir los bits a dicha
cadena y luego sumarle uno, lo que dara exactamente el mismo resultado.
El rango de la representacin NC2 es diferente a todo lo que hemos visto hasta ahora.
Por definicin, el cero se considera como un nmero positivo, lo que permite que se
pueda construir una combinacin de ms con los negativos. Eso nos permite ampliar el
rango, como muestra la Tabla 2.1, para llegar desde el -2
n-1
hasta el +2
n-1
-1.
Por otra parte, la representacin del menor nmero negativo vlido, el -2
n-1
, que siempre
tiene la forma 1000...000, hace especialmente compleja para el alumno la resolucin de
los problemas de representacin si se opta por utilizar el truco en lugar de la propia
definicin.
Representaciones en exceso a X
La representacin de nmeros en exceso a X nos permite, sin tener en cuenta ninguna de
las complejidades relacionadas con el bit de signo, almacenar nmeros negativos en el
rango comprendido entre X a 0. Por ejemplo, -13 se puede almacenar en exceso a 20, y
para ello slo nos basta conocer el formato Binario Natural:
EXC20
n
(-13) = BN
n
(7) = 000...0111
Tradicionalmente, los formatos en exceso ms utilizados son el exceso a 3, el exceso a
2
n-1
y el exceso a 2
n-1
-1. En particular, se utilizan mucho los valores n=8 y 11 (exceso a
127, exceso a 128 y excesos a 1023 y 1024)
La siguiente tabla muestra la representacin del rango -8 a +8 en los distintos formatos:
base 10 signo magnitud exceso a 8 exceso a 7 negativos C1 negativos C2
+7 0 111 1111 1110 0 111 0 111
+6 0 110 1110 1 101 0 110 0 110
+5 0 101 1 101 1100 0 101 0 101
+4 0 100 1100 1 011 0 100 0 100
+3 0 011 1 011 1 010 0 011 0 011
+2 0 010 1 010 1 001 0 010 0 010
+1 0 001 1 001 1 000 0 001 0 001
+0 0 000
1 000 0 111
0 000
0 000
-0 1 000 1 111
-1 1 001 0 111 0 110 1 110 1 111
-2 1 010 0 110 0 101 1101 1 110
-3 1 011 0 101 0 100 1 100 1101
-4 1 100 0 100 0 011 1 011 1 100
-5 1 101 0 011 0 010 1 010 1 011
-6 1 110 0 010 0 001 1 001 1 010
-7 1 111 0 001 0 000 1 000 1 001
-8

0 000

1 000

Tabla 2.1 Representacin de distintos nmeros enteros en diferente formatos

Representacin en punto fijo (coma fija)
A menudo, a los nmeros naturales y enteros
Nmeros en punto fijo, o coma fija
Esto es as porque la coma de fraccin
est (imaginariamente) fijada
registro de almacenamiento, o lo que es lo mismo, justo a la derecha del dgito de
menos peso, en un sistema posicional.
Estrictamente hablando, los nmeros
general) son todos aquellos en los que la coma de fraccin est siempre en una misma
posicin, que no tiene por qu ser el extremo de la derecha.
Un computador, por ejemplo, puede trabajar con nmeros de
siempre, los 4 bits de la derecha son fraccin, y los ocho de la izquierda representan la
parte entera.
Toda la discusin anterior, que afectaba a la representacin de naturales y enteros, en
realidad, se puede extrapolar a n
En nuestro ejemplo, PI se representa con 00000003.1416 en Decimal Natural, o en la
forma 99999996.8583 en negativos complemento a 9. 99999996.8584 sera su
complemento a 10
8.
Obsrvese que en este caso, la posicin de los
a izquierda se anota desde -4 a +8.
El siguiente ejemplo muestra cmo se convierte un nmero a formato en punto fijo con
parte fraccin de 4 bits (observe la numeracin en funcin de la posicin):
Observe que el bit de la derecha de l
la derecha de la coma tiene peso 2

Representacin en punto fijo (coma fija)
aturales y enteros, en computacin, se les conoce como
Nmeros en punto fijo, o coma fija.
coma de fraccin, en el registro de almacenamiento del nmero,
da en una posicin determinada: el extremo derecho de
registro de almacenamiento, o lo que es lo mismo, justo a la derecha del dgito de
menos peso, en un sistema posicional.
Estrictamente hablando, los nmeros en punto fijo representados con n bits (o dgitos en
general) son todos aquellos en los que la coma de fraccin est siempre en una misma
posicin, que no tiene por qu ser el extremo de la derecha.
Un computador, por ejemplo, puede trabajar con nmeros de 12 bits en los que siempre,
siempre, los 4 bits de la derecha son fraccin, y los ocho de la izquierda representan la
Toda la discusin anterior, que afectaba a la representacin de naturales y enteros, en
realidad, se puede extrapolar a nmeros genricos en punto fijo.
En nuestro ejemplo, PI se representa con 00000003.1416 en Decimal Natural, o en la
6.8583 en negativos complemento a 9. 99999996.8584 sera su
Obsrvese que en este caso, la posicin de los nmeros, de derecha
4 a +8.
El siguiente ejemplo muestra cmo se convierte un nmero a formato en punto fijo con
parte fraccin de 4 bits (observe la numeracin en funcin de la posicin):

Observe que el bit de la derecha de la cadena tiene un peso de 0.0625, 2
-4
, y que el bit a
la derecha de la coma tiene peso 2
-1
(0.5).
conoce como
ento del nmero,
el extremo derecho del
registro de almacenamiento, o lo que es lo mismo, justo a la derecha del dgito de
en punto fijo representados con n bits (o dgitos en
general) son todos aquellos en los que la coma de fraccin est siempre en una misma
12 bits en los que siempre,
siempre, los 4 bits de la derecha son fraccin, y los ocho de la izquierda representan la
Toda la discusin anterior, que afectaba a la representacin de naturales y enteros, en
En nuestro ejemplo, PI se representa con 00000003.1416 en Decimal Natural, o en la
6.8583 en negativos complemento a 9. 99999996.8584 sera su
nmeros, de derecha
El siguiente ejemplo muestra cmo se convierte un nmero a formato en punto fijo con
, y que el bit a
Extensin del signo
Qu ocurre cuando queremos aumentar el nmero de dgitos utilizados para representar
un nmero?
El procedimiento es el siguiente (es trabajo del alumno comprobar que es as, en
funcin del formato utilizado).
Si el nmero est en formato BN, se completa con 0s a la izquierda.
Si el nmero est en cualquier otro formato y es positivo, se completa con 0s a la
izquierda.
Si el nmero est en NC1 o NC2 y es negativo, se completa con 1s a la izquierda. Por
esta razn, al aumento del tamao de un nmero se suele conocer como extensin del
signo.
Si el nmero tiene una parte fraccin, a la derecha de la coma, entonces si se aumenta la
parte fraccin, se hace con ceros a la derecha, a menos que se utilice el formato NC1, en
cuyo caso se incrementa con 1s.
2.1.3 Nmeros flotantes, o en coma flotante
En muchas ocasiones, el computador necesita manipular datos en los que la
representacin de enteros, o de nmeros en punto fijo, es insuficiente. Imagine, por
ejemplo, que se desea almacenar el nmero de Avogadro, 6.023 10
23
. Evidentemente,
no hay registros de suficientes dimensiones para almacenarlo como entero, e incluso
puede ser imposible en el caso de nmeros reales o racionales muy pequeos.
En este caso, el computador utiliza un formato de representacin de los nmeros,
similar a la que precisamente se ha utilizado para representar el nmero de Avogadro,
en la forma de una mantisa (o nmero en formato de punto fijo como el +6.023), una
base (por ejemplo 10) y un exponente en punto fijo (+23).
Este tipo de representacin, constituido por un triplete de nmeros en punto fijo, se
denomina coma flotante, ya que el punto fijo de la mantisa (6.023) no ocupa en la
realidad la posicin que aparenta, sino que se ha hecho flotar o desplazar hacia la
izquierda un nmero entero de posiciones. Exactamente se ha desplazado 23 posiciones
(el exponente) respecto a la que hubiera sido su posicin real en un formato de punto
fijo.
Para nuestro ejemplo, y dado que la base es 10 (en general, podra servir cualquier
potencia de 10), un valor entero del exponente implica que la coma se desplaza un
nmero entero de posiciones.
Es lgico pensar, por tanto, que en cualquier representacin en punto flotante, la base
debe ser una potencia de la base utilizada para representar la mantisa.
En la prctica, la base es una constante en cualquier formato de coma flotante, por lo
que podemos resumir diciendo que:
Un nmero en punto flotante est representado por una pareja de nmeros en punto fijo
(mantisa y exponente).
En el computador, la mantisa se almacena en binario, y en consecue
una potencia de dos como base. Tradicionalmente, las bases ms utilizadas son 2 y 16.
Veamos a continuacin un ejemplo en el que, por simplicidad, la mantisa es siempre
positiva de 3 dgitos (Binario Natural
exponente es un nmero de 2 bits
Dada una base de referencia (por ejemplo, 2),
dgitos representa al nmero #.##
La siguiente figura representa en la recta real todos
representar con este formato, lo que por otra parte nos servir como base para una
discusin en profundidad de algunos aspectos de este formato de representacin de
datos:

La Base
Como se dijo anteriormente, en un computad
potencia de dos para asegurarnos que un incremento o decremento unitario del
exponente se corresponde en un desplazamiento de la coma fraccin en un nmero
entero de posiciones.
Como ejemplo, si representamos N en la f
desplaza la coma exactamente
hubiramos podido hacer lo mismo
En la prctica, la base es una constante en cualquier formato de coma flotante, por lo
que podemos resumir diciendo que:
Un nmero en punto flotante est representado por una pareja de nmeros en punto fijo
En el computador, la mantisa se almacena en binario, y en consecuencia se suele utilizar
una potencia de dos como base. Tradicionalmente, las bases ms utilizadas son 2 y 16.
Veamos a continuacin un ejemplo en el que, por simplicidad, la mantisa es siempre
positiva de 3 dgitos (Binario Natural, con un bit a la izquierda de la coma,
ero de 2 bits, ##, en formato NC2 (desde. -2 (11) hasta +1 (01)):
Dada una base de referencia (por ejemplo, 2), un nmero en punto flotante #
dgitos representa al nmero #.## 2
$$
La siguiente figura representa en la recta real todos los nmeros que podramos
representar con este formato, lo que por otra parte nos servir como base para una
discusin en profundidad de algunos aspectos de este formato de representacin de
Como se dijo anteriormente, en un computador binario, debemos utilizar una base
potencia de dos para asegurarnos que un incremento o decremento unitario del
exponente se corresponde en un desplazamiento de la coma fraccin en un nmero
Como ejemplo, si representamos N en la forma 60.23 100
11
, un aumento del exponente
exactamente dos posiciones a la izquierda: 0.6023 100
lo mismo si la base hubiera sido 2.
En la prctica, la base es una constante en cualquier formato de coma flotante, por lo
Un nmero en punto flotante est representado por una pareja de nmeros en punto fijo
ncia se suele utilizar
una potencia de dos como base. Tradicionalmente, las bases ms utilizadas son 2 y 16.
Veamos a continuacin un ejemplo en el que, por simplicidad, la mantisa es siempre
, con un bit a la izquierda de la coma, #.##) y el
2 (11) hasta +1 (01)):
#.##$$ de 5
los nmeros que podramos
representar con este formato, lo que por otra parte nos servir como base para una
discusin en profundidad de algunos aspectos de este formato de representacin de

or binario, debemos utilizar una base
potencia de dos para asegurarnos que un incremento o decremento unitario del
exponente se corresponde en un desplazamiento de la coma fraccin en un nmero
, un aumento del exponente
23 100
12
. No
Por esta razn, en binario se utilizan bases potencias de 2.
grande o pequea? Qu hubiera ocurrido en nuestro ejemplo con una base mayor?
Observe que con base 4 (vlida por ser potencia de 2)
1.25 4
+1
, (5 en lugar de 2.5). El resultado es que una base m
de representacin.
Pero si se compara esta figura con la anterior, nos damos cuenta de que l
nmeros representables (20, un grupo muy reducido de todos los r
misma. Los mismos nmeros
es lo mismo, menos precisin: Dado un nmero real cualquiera, el nmero representable
ms cercano est de media, el doble de lejos.
La experiencia demuestra que en los computadores modernos es ms necesaria la
precisin que el rango, por lo que se utiliza una base pequea, que casi siempre es 2.
A partir de ahora siempre se utilizar esta base.
El exponente
Qu hubiera pasado en nuestro
Evidentemente, podemos construir nmeros ms grandes, o ms prximos a cero (fjese
en las flechas de la grfica) aumentando de esa forma el rango, sin afectar a la preci
pero a costa de mayor nmero de bits de almacenamiento.
Por esta razn, en binario se utilizan bases potencias de 2. Pero interesa una base
grande o pequea? Qu hubiera ocurrido en nuestro ejemplo con una base mayor?
(vlida por ser potencia de 2), la cadena 1.01 01 representa al
, (5 en lugar de 2.5). El resultado es que una base ms grande aumenta el
Pero si se compara esta figura con la anterior, nos damos cuenta de que la cantidad de
un grupo muy reducido de todos los reales) sigue siendo la
misma. Los mismos nmeros en un rango ms grande significa ms dispersin, o lo qu
es lo mismo, menos precisin: Dado un nmero real cualquiera, el nmero representable
ms cercano est de media, el doble de lejos.
experiencia demuestra que en los computadores modernos es ms necesaria la
precisin que el rango, por lo que se utiliza una base pequea, que casi siempre es 2.
A partir de ahora siempre se utilizar esta base.
Qu hubiera pasado en nuestro ejemplo si se aumenta el nmero de bits del exponente?
ntemente, podemos construir nmeros ms grandes, o ms prximos a cero (fjese
en las flechas de la grfica) aumentando de esa forma el rango, sin afectar a la preci
pero a costa de mayor nmero de bits de almacenamiento.
Pero interesa una base
grande o pequea? Qu hubiera ocurrido en nuestro ejemplo con una base mayor?
, la cadena 1.01 01 representa al
s grande aumenta el rango

a cantidad de
sigue siendo la
en un rango ms grande significa ms dispersin, o lo que
es lo mismo, menos precisin: Dado un nmero real cualquiera, el nmero representable
experiencia demuestra que en los computadores modernos es ms necesaria la
precisin que el rango, por lo que se utiliza una base pequea, que casi siempre es 2.
ejemplo si se aumenta el nmero de bits del exponente?

ntemente, podemos construir nmeros ms grandes, o ms prximos a cero (fjese
en las flechas de la grfica) aumentando de esa forma el rango, sin afectar a la precisin,
La prctica ha demostrado que un nmero de bits entre 8 y 11 para el exponente
(nmeros en el rango 2127,
en punto flotante de grandes o pequeas dimensiones
universo hay muchas menos partculas subatmicas que
fermin es muy superior a 2
-128
La Mantisa
Y qu pasa con la mantisa? Imagine que aadimos un bit a la mantisa, para que tenga
la forma #.###. El resultado es que entre cada dos nmeros representables, tendremos
un nuevo nmero. Aumentamos la precisin, sin que afecte al rango (apenas), pe
costa de un mayor coste de almacenamiento.
Nuevamente la experiencia establece que
ms que suficiente para la mayora de nuestras necesidades computacionales, ya que
podemos escribir cifras cuya
decimales.
Normalizacin
Revisemos de nuevo nuestro ejemplo.
representar el nmero 0.25: 0.5
esta redundancia (que afecta indirectamente a la precisin) se suele utilizar una tcnica
conocida como normalizacin
siempre est en una posicin fija respecto al dgito ms significativo del nmero.
Observe que los siguientes nmeros
significativo a la izquierda de la coma
6.023 10
23
, 1.609 10
19
, 3.1416 10
El nico nmero que no se puede normalizar es el cero, que no tiene dgito significativo.
En el computador, la normalizacin se hace con el bit ms signific
de la coma.
La prctica ha demostrado que un nmero de bits entre 8 y 11 para el exponente
127, 21024) es ms que suficiente para representar nmeros
de grandes o pequeas dimensiones (observe que en todo
os partculas subatmicas que 2
1014
, o que la masa de un
128
).
Y qu pasa con la mantisa? Imagine que aadimos un bit a la mantisa, para que tenga
la forma #.###. El resultado es que entre cada dos nmeros representables, tendremos
un nuevo nmero. Aumentamos la precisin, sin que afecte al rango (apenas), pe
costa de un mayor coste de almacenamiento.
Nuevamente la experiencia establece que entre 24 (simple) y 53 bits (doble precisin)
para la mayora de nuestras necesidades computacionales, ya que
podemos escribir cifras cuya precisin equivaldra al uso de entre 7 y 15 dgitos
nuestro ejemplo. Es fcil darse cuenta que hay distintas formas de
0.5 2
-1
, 0.25 2
-0
, 1 2
-2
. Peor an es el caso del 0. Para evitar
esta redundancia (que afecta indirectamente a la precisin) se suele utilizar una tcnica
normalizacin, que consiste que en la mantisa, la coma de fraccin
re est en una posicin fija respecto al dgito ms significativo del nmero.
Observe que los siguientes nmeros en base 10 estn normalizados con el dgito ms
erda de la coma:
, 3.1416 10
0
, 1.492 10
3
.
El nico nmero que no se puede normalizar es el cero, que no tiene dgito significativo.
En el computador, la normalizacin se hace con el bit ms significativo, a la izquierda
La prctica ha demostrado que un nmero de bits entre 8 y 11 para el exponente
es ms que suficiente para representar nmeros
todo nuestro
, o que la masa de un
Y qu pasa con la mantisa? Imagine que aadimos un bit a la mantisa, para que tenga
la forma #.###. El resultado es que entre cada dos nmeros representables, tendremos
un nuevo nmero. Aumentamos la precisin, sin que afecte al rango (apenas), pero a

(doble precisin) es
para la mayora de nuestras necesidades computacionales, ya que
equivaldra al uso de entre 7 y 15 dgitos
que hay distintas formas de
del 0. Para evitar
esta redundancia (que afecta indirectamente a la precisin) se suele utilizar una tcnica
a de fraccin
re est en una posicin fija respecto al dgito ms significativo del nmero.
con el dgito ms
El nico nmero que no se puede normalizar es el cero, que no tiene dgito significativo.
ativo, a la izquierda
El cero
Como el cero no se puede normalizar, y para evitar confusiones, en la mayora de los
formatos en punto flotante se considera que el cero se representa con mantisa cero y
exponente cero, evitando ms especulaciones.
El bit ms significativo implcito
Observe el dgito ms significativo, a la izquierda de la coma, en los nmeros decimales
normalizados que se han puesto de ejemplo: el 6, el 1, el 3 y el 1. Qu tienen en
comn? Que son distintos del cero. Y si los nmeros fueran binarios? Qu otra cosa
tendran en comn? Que todos ellos seran un 1.
Dicho de otra forma. Cualquier nmero normalizado, en binario, tendra la forma:
1.##### 2
$$$$

Es decir, que al guardar el nmero en un registro del computador de n bits, al menos
uno de esos bits tiene un valor siempre conocido 1#####$$$$$ (el cero es una
excepcin).
Imagine que un computador guarda nmeros en punto flotante de 16 bits. Con tantos
bits, tendramos unas 64000 combinaciones posibles de nmeros representables, pero
como cierto dgito debe ser siempre 1, slo habra 32000 combinaciones vlidas, el
resto, salvo la que represente el cero, son no vlidas.
Para evitar este desperdicio, se utiliza una tcnica denominada bit implcito que
simplemente consiste en no almacenar el bit ms significativo de la mantisa, ya que
ste siempre es 1. Con ello conseguimos que todas las combinaciones sean vlidas y de
esa forma duplicamos la precisin sin coste alguno.
As, por ejemplo, del nmero 1.10 11 slo guardaramos la cadena .10 11
Eso no significa que el bit se elimine para siempre. Antes de hacer cualquier operacin
aritmtica con ese nmero, el hardware debe restaurar en su posicin el bit implcito.
El formato IEEE754
Con toda esta discusin, casi hemos llegado a definir el formato de representacin en
punto flotante ms utilizado. El formato IEEE-754.
Es un formato que consume 32 bits y en el que la base es 2
La mantisa completa es de 25 bits. Equivale a una precisin de 7 dgitos decimales.
La mantisa tiene un formato Signo Magnitud (1 bit de signo, 24 de magnitud), pero el
signo de la mantisa (que es el del nmero) est separado de la magnitud.
La mantisa est normalizada con el bit ms significativo a la izquierda de la coma.

El bit ms significativo de la mantisa es implcito. (Slo se guardan 23 bits de la
magnitud de la mantisa)
El exponente consume 8 bits y se almacena en exceso a 127 (puede representar
valores de -127 a +128). El rango equivalente en base 10 es aproximadamente 10
38
.
Los bits se ordenan de la siguiente forma:
SEEEEEEE EMMMMMMM MMMMMMMM MMMMMMMM
(signo de la mantisa/del nmero) (exponente de 8 bits) (23 bits de la magnitud de la mantisa)
Con todo lo dicho, el nmero que se guarda en ese formato se reconstruye con la
siguiente frmula, en la que se recupera el bit implcito y se reordenan signo y
magnitud:
(-1)
S
1.MMMMMMMMMMMMMMMMMMMMMMM 2
(EEEEEEEE 127)

Es importante observar que en este formato (a menudo se representa como float o real
en los lenguajes de programacin), no podemos almacenar nmero fuera del rango
(tampoco parece una limitacin fuerte, en general).
Pero la precisin a veces puede resultar baja. Si se hace el siguiente experimento en
lenguaje c, nos damos cuenta de que la precisin no es la deseada:
float a=3.14159265358979323846; printf(a);
Por esta razn, existe un formato IEEE-754 de doble precisin, as como casos
especiales que amplan o mejoran la capacidad del formato para las necesidades ms
habituales de los programadores.
2.1.4 Datos alfanumricos
Adems de los datos numricos, en general,
Representacin de las Instrucciones
Un computador es una mquina formada por millones de transistores y puertas lgicas
interconectados de alguna forma entre s, y que tiene la capacidad de realizar
operaciones de una tremenda complejidad. En gran parte, toda esta potencia de clculo
se debe a la capacidad que tenemos de programas el funcionamiento de todas y cada una
de las puertas y transistores.
La herramienta de la que disponemos para realizar esta tarea es la instruccin en
lenguaje mquina, una cadena de ceros y unos almacenada en algn lugar del
computador, y que tiene la propiedad de ser
el programador.

El conjunto de instrucciones que un procesador es capaz de entender se conoce como
juego de instrucciones. Y la especificacin de las caractersticas del j
instrucciones es la arquitectura del juego de instrucciones, o ISA
ingls.
A veces tambin se le conoce como arquitectura del computador, pues el juego de
instrucciones es ya en s una especificacin formal del procesador, d
memoria y la entrada y salida, desde el punto de vista del programador. De hecho, se
puede decir que es lo que el programador ve de la mquina, mientras que el proceso por
el que se traducen esas instrucciones al hardware se conoce co
Las operaciones del hardware

Sabemos, que cualquier computador es capaz de realizar ciertas operaciones muy
elementales, por ejemplo, sumar, mover un dato de un lugar a otro, saltar, etc. Son
operaciones bsicas que estn disponibles e
Representacin de las Instrucciones
na mquina formada por millones de transistores y puertas lgicas
interconectados de alguna forma entre s, y que tiene la capacidad de realizar
operaciones de una tremenda complejidad. En gran parte, toda esta potencia de clculo
e tenemos de programas el funcionamiento de todas y cada una
La herramienta de la que disponemos para realizar esta tarea es la instruccin en
lenguaje mquina, una cadena de ceros y unos almacenada en algn lugar del
ador, y que tiene la propiedad de ser inteligible tanto para el hardware como para
El conjunto de instrucciones que un procesador es capaz de entender se conoce como
juego de instrucciones. Y la especificacin de las caractersticas del j
arquitectura del juego de instrucciones, o ISA, que es su acrnimo en
A veces tambin se le conoce como arquitectura del computador, pues el juego de
instrucciones es ya en s una especificacin formal del procesador, de su relacin con la
memoria y la entrada y salida, desde el punto de vista del programador. De hecho, se
puede decir que es lo que el programador ve de la mquina, mientras que el proceso por
esas instrucciones al hardware se conoce como implementacin.
Las operaciones del hardware
Sabemos, que cualquier computador es capaz de realizar ciertas operaciones muy
elementales, por ejemplo, sumar, mover un dato de un lugar a otro, saltar, etc. Son
operaciones bsicas que estn disponibles en prcticamente todos los procesadores.

na mquina formada por millones de transistores y puertas lgicas
interconectados de alguna forma entre s, y que tiene la capacidad de realizar
operaciones de una tremenda complejidad. En gran parte, toda esta potencia de clculo
e tenemos de programas el funcionamiento de todas y cada una
La herramienta de la que disponemos para realizar esta tarea es la instruccin en
lenguaje mquina, una cadena de ceros y unos almacenada en algn lugar del
tanto para el hardware como para
El conjunto de instrucciones que un procesador es capaz de entender se conoce como
juego de instrucciones. Y la especificacin de las caractersticas del juego de
, que es su acrnimo en
A veces tambin se le conoce como arquitectura del computador, pues el juego de
e su relacin con la
memoria y la entrada y salida, desde el punto de vista del programador. De hecho, se
puede decir que es lo que el programador ve de la mquina, mientras que el proceso por
mo implementacin.
Sabemos, que cualquier computador es capaz de realizar ciertas operaciones muy
elementales, por ejemplo, sumar, mover un dato de un lugar a otro, saltar, etc. Son
n prcticamente todos los procesadores.
Pues bien, una instruccin no es ms que una cadena binaria donde se indica: la
operacin a realizar, con qu datos la va a realizar, y qu condicin tiene que cumplirse
para que se lleve a cabo. Cuando el procesador recibe una de estas instrucciones, la
ejecuta.

Adems, suele realizar operaciones adicionales a modo de efectos colaterales. Uno de
los efectos colaterales ms conocidos (del que se habl en el tema 1) es el incremento
automtico del contador de programa, preparando de esta forma a la mquina para la
siguiente instruccin. (El puntero explcito a la direccin de la siguiente instruccin era
necesario en algunas de las primeras arquitecturas)
Como se dijo anteriormente, esta cadena binaria es inteligible para nosotros, sin
embargo, para poder movernos con mayor comodidad con el juego de instrucciones,
hemos inventado un lenguaje de representacin intermedia conocido como
ensamblador. Una instruccin en lenguaje ensamblador est formada por un mnemnico
y una secuencia de operandos. El mnemnico se utiliza para representar la operacin a
realizar, que en su versin binaria se conoce como cdigo de operacin .
Ejemplos de mnemnicos:
ADD, JUMP, MOVE
Pero adems del cdigo de operacin, las operaciones requieren operandos, donde se
digan con que datos se va a trabajar y donde hay que guardar los resultados. Por
ejemplo, cuando movamos un dato hay que decir de dnde lo sacamos y en qu lugar lo
almacenamos.
MOVE X, Y (copiar la informacin almacenada en X en la localizacin Y)
Recuerdo, que siempre que mencione un movimiento de datos, me refiero a la
realizacin de una copia de un lugar del computador a otro. Equivale a la tpica
instruccin x=y en los lenguajes de alto nivel que copia el valor actual de la variable y
en la variable x.
En el nivel ISA, una variable se considera como un espacio fsico donde se guarda un
dato, y al que le asignaremos el nombre de direccin, de la misma forma que usamos
direcciones para referirnos a los lugares donde residimos.
Con la misma frecuencia que utilizamos variables en lugar de constantes, utilizaremos
direcciones en las instrucciones mquinas, por lo que, es frecuente llamar a los
operandos de una instruccin con el nombre de direcciones.
A las diferentes formas de suministrar una direccin las conocemos como modos de
direccionamiento.
Por otro lado, puede ocurrir que una instruccin no necesite especificar perfectamente
todas las direcciones sino que algunas de ellas pueden estar implcitas en la propia
instruccin. Distinguiremos as entre los operandos o direcciones implcitas, que no
aparecen en la instruccin, y las explcitas.
Nmero de operandos (explcitos)
Pero, Cuntos operandos explcitos debe tener una instruccin? Bueno, eso depender
de varios factores, por ejemplo, de la operacin a realizar. Habr operaciones unarias,
como el clculo del opuesto, que al menos necesitan una fuente y un destino. Pero
centremos nuestra discusin en las binarias. Lo normal debera ser que se especifiquen
tres direcciones, dos fuentes y un destino. Hay muchas arquitecturas que operan as, y se
conocen como mquinas de tres operandos.
ADD A,B,C (A=B+C)
Pero prcticamente desde los inicios, las limitaciones de memoria de los computadores
han sido un serio obstculo que se ha salvado normalmente reduciendo los programas, a
costa en muchos casos de reducir las instrucciones. Y una forma de hacer las
instrucciones ms cortas consiste en utilizar una de las direcciones a la vez como fuente
y como destino. Son utilizadas por las mquinas de dos operandos. Por un lado,
conseguimos reducir las instrucciones, pero por otro lado perdemos flexibilidad, pues
uno de los operandos sera reemplazado por el resultado.
ADD A, B (A=A+B)
Las instrucciones de alto nivel del tipo a=a+b seran traducidas sin problemas al
lenguaje de la mquina, pero sin embargo, instrucciones como a=b+c deberan
traducirse por a=c; a=a+b
Existen tambin mquinas que requieren un operando explcito. Este tipo de
arquitecturas, estn basadas en el uso de un registro especial, el acumulador, que sirve
implcitamente como una de las direcciones fuentes y tambin como destino.
ADD X (Ac=Ac+X)
Aunque las arquitecturas de acumulador han desaparecido prcticamente, an quedan
algunos vestigios en calculadoras de bolsillo (TI1000 vendi 20 millones de unidades
en 1979).
Finalmente encontramos mquinas de cero operandos en las que, tanto las fuentes como
el destino, estn implcitos. Para ello, suelen utilizar como direcciones un lugar especial
de la mquina conocido como la pila. Haremos un pequeo parntesis para hablar de la
pila.
La pila no es ms que un conjunto de direcciones organizadas de forma que solo se
puede introducir un nuevo dato, colocndolo justo encima del ltimo que se guard
previamente, y del cul solo se pueden extraer los datos que estn justo en lo alto. (Los
conceptos de encima y debajo suelen estar asociados a posiciones posteriores o
anteriores de memoria de una forma predeterminada para cada mquina)
El computador registra en un lugar denominado puntero de pila (PP) la direccin del
ltimo elemento guardado, para saber donde debe poner el dato o de donde lo tiene que
quitar.
A la operacin de introducir un dato en la pila se le conoce como PUSH y la extraccin
se conoce como POP.
La operacin de suma se realizara en una mquina de cero operandos extrayendo
como fuentes los dos ltimos elementos de la pila, y guardando el resultado en lo alto
de sta.
ADD (pop A, pop B, C=A+B, push C)
En resumen, hemos visto mquinas de cero, uno, dos o tres operandos para las
operaciones binarias, Aunque es ms frecuente clasificar las arquitecturas por los
nombres que a continuacin se presentan:
En orden creciente de longitud encontraremos
Arquitectura de pila, en las que la mayora de las instrucciones no tienen ningn
operando explcito, salvo las instrucciones PUSH y POP que deben indicar las
direcciones ...
Arquitecturas de acumulador cuando utilizan un operando explcito y el registro
Acumulador,
Finalmente, las arquitecturas de 2 o 3 direcciones explcitas se conocen a
menudo como Arquitecturas de Registros de Propsito General (RPG) en
contraposicin a las arquitecturas de Registros de Propsito Especfico, como el
registro acumulador
Entre stas ltimas es frecuente realizar una distincin en funcin del nmero de sus
operandos que estn en memoria y cuntos estn en registro.

As, cuando todos sus operandos son direcciones de memoria, hablaremos de
Arquitecturas Memoria-Memoria, que obtienen sus operandos de memoria y guardan
sus resultados en ella.

Las AMM se caracterizan por producir cdigos con pocas instrucciones, aunque estas
suelen ser de longitud muy variable, y provocan un elevado trfico con la memoria.
Otras arquitectura, sin embargo, no operan con ningn dato de la memoria. Son las
Arquitecturas Registro-Registro en las que las instrucciones son mucho ms simples,
aunque ser necesario aumentar el nmero de instrucciones en programa y por supuesto,
disponer de una mayor cantidad de registros.
Finalmente, existen opciones intermedias, bastante frecuentes, en las que al menos un
dato puede residir en la memoria. Son las Arquitecturas Registro Memoria.
Antes de seguir avanzando con los MD, recordemos algunos aspectos importantes del
acceso a memoria.
La memoria
Sabemos que la memoria es una estructura ordenada de datos, en la que la direccin de
cada uno de los datos es precisamente su nmero de orden.
Si un dato ocupara ms de una posicin, lo cul es bastante frecuente, consideraremos
que la posicin del dato es la direccin ms baja de las que ocupa.
En muchos casos los datos debern estar alineados en memoria, lo cual significa que los
datos de tamao n deben ocupar las posiciones mltiplo de n.
Cuando un dato ocupa varias posiciones de memoria, dnde debemos almacenar la
parte ms significativa, y dnde la menos significativa? En principio, cualquier opcin
sera vlida y no hay grandes diferencias entre una opcin u otra. Si decidimos que la
direccin del dato es la de la parte ms significativa, es decir, la direccin del dato es la
de su extremo ms grande, diremos que hemos utilizado un almacenamiento big-endian;
en caso contrario, el almacenamiento se conoce como little-endian.
Modos de Direccionamiento.

Hemos mencionado que en la mayora de los casos, los operandos no son incluidos en la
instruccin, sino que se suele especificar el lugar donde se almacenan.
Como en un computador solo hay dos lugares posibles para los datos: los registros
y la memoria, en principio, una direccin debe indicar directamente el nombre de un
registro o la direccin de memoria. Pues bien, estas sern las dos primeras formas o
modos de direccionar los operandos que conozcamos: Modo de direccionamiento (MD)
Directo a Registro, o simplemente Registro y MD Directo a Memoria o MD Absoluto.


En otros casos, nos encontraremos que en la instruccin lo que aparece es el lugar donde
se guarda la direccin de un dato. Es lo que se denomina como indireccin. Es algo
parecido a lo que ocurre con las direcciones de las personas y los "apartado de correos".

Desde el punto de vista del computador, la indireccin puede ser:
Un registro que guarda la posicin en memoria de un dato (MD indirecto por
registro, indirecto)
una posicin de memoria que guarda la posicin en memoria de un dato (MD
indirecto por memoria)
En este ejemplo vemos como una instruccin usa el MDIR para un operando fuente, y
el MDIM para el otro.


En ambos casos, tanto el RG2 como la direccin 1021 contienen los punteros o las
direcciones de los datos que van a ser operados.
De hecho, estos modos indirectos equivalen a las variables punteros en los lenguajes de
alto nivel.
Pero existen otros MD, que se resumen aqu.
El primero, que ya conocemos, es el modo de direccionamiento implcito o
inherente presente cuando en la instruccin no aparece explcitamente ninguna
referencia al operando

Uno de los modos ms frecuentes es el MD inmediato o literal, que ocurre
cuando las instrucciones incluyen el propio dato y no su direccin
Finalmente, en el modo relativo, La posicin del dato en memoria se obtiene
normalmente sumando dos nmeros, uno que se considera la base o punto de
referencia de la memoria y el otro es el desplazamiento.
o Existen varias formas para los modos relativos, aunque quiz la ms
frecuente es aquella en la que un registro guarda la direccin de
referencia, y un (relativamente) pequeo dato numrico positivo o
negativo selecciona una posicin de memoria cercana a esa referencia.
Es el MD Relativo a Base.

o Tambin muy frecuente es aquella en la que el dato numrico representa
una direccin de memoria de referencia, mientras que el registro guarda
el desplazamiento en el entorno de la referencia. Es el MD Relativo a
Indice,que se suele utilizar para acceder a los elementos de un vector,
siendo el dato numrico la direccin del vector, mientras que el ndice
del elemento del vector se guarda en el registro.

Terminaremos este primer apartado, juntando todos los conceptos que hemos
presentado, en lo que es el ncleo de esta leccin: la instruccin:

La instruccin, repito, no es ms que una cadena binaria formada por: Un cdigo de
operacin, representado en binario, y una secuencia de 0,1,2 o 3 operandos, cada uno
con su correspondiente representaciones en binario, y en los que cada operando debera
indicar:
El modo de Direccionamiento que se est utilizando
El nombre del registro que se utiliza, si fuera necesario
Y tambin si fuera necesario, un dato numrico que indique bien una direccin,
un valor constante o un desplazamiento
Pasamos al siguiente apartado en el que analizaremos el Formato de Instruccin, es
decir, es la especificacin del significado de cada uno de los bits que forman la
instruccin.

Como agruparemos los bits formando campos, el FDI es una Definicin formal de los
campos de la instruccin
posicin del campo
tamao del campo
significado del campo
Aunque puede ocurrir que un computador tenga un formato fijo, lo ms frecuente es que
cada arquitectura tenga varios formatos para las diferentes instrucciones.
Factores a tener en cuenta:
Su especificacin debe ser una de las fases ms tempranas del diseo de una
nueva arquitectura.
Deber sobrevivir unos 20-30 aos, pues es el tiempo mnimo de vida de una
arquitectura de xito
Debe tener en cuenta la memoria. Arquitectura de pila para memorias rpidas, de
RPG para lentas (quien sabe lo que pasar en 20 aos?)
Cortas mejor que largas. Pero poco codificadas
Con espacio suficiente para todas las instrucciones
Campos preferentemente alineados
Pero Qu informacin debe incluirse en el formato de una instruccin
He aqu una seleccin de los campos que aparecen con ms frecuencia:
Respecto a la parte dedicada a indicar "lo que hay que realizar" o "Cdigo de
Operacin", descubrimos que en realidad debe estr constituido por diferentes
subcampos.
CGO Cdigo (genrico) de operacin (p.e. suma, resta, movimiento, salto)
SC Subcdigo, o funcin (p.e. signed, unsigned, float, integer)
SZ Tamaos de los operandos (p.e. byte, half-word, word, double precision)
CN Condicin que debe cumplirse para que la instruccin se ejecute: (mayor
que, menor que, par, impar, etc.)
SE Sentido de la operacin (en desplazamientos si es a izquierda o derecha,
autoincremento o autodecremento)
NV Nmero de veces que se realiza (p.e. en los desplazamientos y rotaciones)
...y por cada operando, hay que especificar:
MD modo de direccionamiento
RG nombre del registro (o los registros)
DN dato numrico

Sobre el tamao de los campos
Cada campo o subcampo utiliza un determinado nmero de bits N. Normalmente N es
un valor fijo, que se calcula segn la regla genrica N= log2(n de posibles casos)
Desgraciadamente, la codificacin de la instruccin no es tan simple, ya que no todos
los campos estn presentes en todas las instrucciones, ni todas las instrucciones tienen
los mismos operandos, ni todos los operandos son similares.
En algunos casos, ni siquiera N es un valor fijo.
Imagine que un determinado campo (p.e., el cdigo genrico de operacin, admite 8
casos posibles (move,add,sub,jump,stop,reset,call,ret).
Se quiere especificar un formato para ese campo. Y segn lo expresado anteriormente,
para un campo en el que caben 8 posibilidades, lo normal es utilizar tres bits (log(8))
para codificar cada una de las posibilidades. Dicha posibilidad se contempla en la
parte izquierda de la siguiente tabla, en la que se sugiere una posible solucin.

000 move
001 add
010 sub
011 jump
100 stop
101 reset
0 move
10 add
110 sub
1110 jump
111100 stop
111101 reset
110 call
111 ret
111110 call
111111 ret

Sin embargo, el nico requisito imprescindible a la hora de codificar la informacin es
que la cadena binaria debe identificar claramente qu tipo de operacin se desea
realizar, es decir, que cada cadena binaria debe indicar una y slo una de las
operaciones. La solucin de la derecha cumple ese requisito, y por tanto es una
solucin vlida.
No obstante en la solucin alternativa no se establece a priori un tamao fijo para el
campo CGO, y en definitiva, altera la ubicacin del resto de campo, por lo que en
definitiva, complica el proceso de interpretacin del significado.
Por otra parte, nunca est clara la frontera que separa semnticamente los distintos
campos. As, hasta que punto, en la solucin de la derecha, no podriamos considerar que
la cadena binaria "1111" no es ms que un Cdigo Genrico de Operacin
denominado "Operaciones poco Frecuentes".
o que la cadena binaria "1" no es ms que un Cdigo Genrico de Operacin
denominado "Operaciones que no son Move".
En la siguiente seccin se analizan los tamaos tpicos de los campos que aparecen con
ms frecuencia.
El cdigo de operacin; siguiendo la regla de usar un nmero de bits igual al
logaritmo en base dos del n de instrucciones, y teniendo en cuenta que los
juegos de instrucciones estn formados por entre 64 y 512 instrucciones, lo
normal es que dicho campo ocupe entre 6 y 9 bits.
Respecto al Modo de Direccionamiento, no hay que olvidar que cada operando
puede poseer su propio MD, y por tanto, se reservar un campo para cada
operando. Aqu vemos como, por ejemplo, un operando al que se le permitan 4
modos, utilizaras dos bits para indicarlo.
Tambin vemos que la codificacin que se utiliza puede ser completamente arbitraria.

Normalmente, a cada operando se le permiten entre 1 y 8 modos, por lo que el campo
MD suele ocupar entre 0 y 3 bits.Destaquemos aqu que en los casos en los que una
instruccin solo permite un modo, equivale a decir que los campos MD y CO se han
fusionado.

Respecto a constantes, direcciones y desplzamientos, para codificarlos
utilizaremos las representaciones de datos que ya conocemos, por la primera
parte del tema.

Y respecto al tamao de dichas secuencias binarias, depender de las necesidades
especficas de cada mquina, aunque aqu juega un papel muy importante la experiencia
adquirida previamente; por ejemplo, los saltos relativos suelen realizarse a instrucciones
situadas en un entorno que no suele superar las 1000 posiciones de memoria, por lo que
10 o 12 bits suelen ser suficientes.

Sobre la codificacin a binario
Hay algunas estrategias de codificacin que son comunes en casi todas las mquinas.
Algunas de ellas, estn relacionadas con la latencia en el acceso a memoria. Por eso, era
frecuente encontrar estas limitaciones:
Que todas las instrucciones tengan tamaos mltiplos de byte.
Intentar incluir en el CO ms informacin; por ejemplo, que en ese campo no
solo se incluya la operacin genrica,
Y finalmente colocar al principio el CO, para que cuando accedamos a la
primera parte de la instruccin sepamos qu hay que hacer, y ya despus
leeremos con quin hay que hacerlo
En consecuencia, de todo lo dicho, encontramos:
Una gran variedad en el nmero y tamao de campos
En algunos casos, cada instruccin tiene su propio formato
Elevado coste de decodificacin
... y manuales del programador de gran tamao
Aqu vemos una muestra grfica de los formatos de instruccin de algunos
computadores muy conocidos, ajustado al cdigo de colores de la imagen anterior.

En la anterior imagen, para cada arquitectura se ha presentado una muestra genrica de
los formatos de instrucciones. En todas ellas, lo normal es que se pueden combinar entre
ellas, de forma que cada arquitectura dispona de miles de formatos diferentes, en
funcin de la instruccin a ejecutar y los MD utilizados.
La filosofa RISC
Sin embargo, en la dcada de los 80 se produjo una importante cambio en la estrategia
de codificacin, que se resume en la siguiente tabla:
Ajustar todas las instrucciones a un tamao determinado
El tamao no debe ser muy grande (muchas instrucciones no lo aprovecharan)
Evitar diferentes modos de direccionamiento (reducir o eliminar el campo MD)
Evitar los accesos directos a memoria
o elimina cadenas binarias muy largas
Limitar los accesos a memoria
o La memoria es ahora mucho ms lenta respecto al procesador
o Es preferible usar informacin en los registros
o Hacen falta ms registros
o El MD Registro es casi el nico modo permitido, con pocas excepciones
Evitar la inclusin de datos numricos de gran extensin.
o Modo Registro, preferentemente
o Modo indirectos por registro o relativos a registros
o Valores inmediatos no muy grandes
o Desplazamientos no muy grandes
Cdigos de operacin de tamao fijo:
o Decodificacin ms simple
Instrucciones muy precisas (nada de cdigos genricos) en las que se indique
o Operacin a realizar, y adems...
o El modo de direccionamiento de todos sus operandos
o El tamao de los operandos, sentido, etc..
Muy pocos formatos (3 o 4).
o Simplifica el hardware
o incrementa el rendimiento

Esta estrategia de diseo, denominada RISC, o computadores con juego de
instrucciones reducido (Reduced Instruction Set Computers), antepone la simplicidad
frente a la complejidad de las arquitecturas precedentes, o CISC (Complex Instruction
Set Computers)
Las consecuencias de estas nuevas estrategias se observan perfectamente en la siguiente
transparencia, donde se resumen los formatos de instruccin de las arquitecturas ms
significativas de los ltimos 15 aos.


A diferencia de las arquitecturas ms antiguas, encontramos ahora un nmero mucho
ms reducido de campos, ya que gran parte de la informacin ha sido absorbida por el
CO. Los campos son ms regulares en tamao. El color amarillo domina, lo que indica
la importancia adquirida por los registros. Adems, el tamao del campo en el que se
indica el registro es ms ancho (ya que ha aumentado el nmero de registros en la
CPU).
El repertorio de Instrucciones
Bien, pasamos a continuacin a exponer el conjunto de instrucciones, es decir a elegir
las instrucciones que deben aparecer en un buen repertorio y a indicar los criterios
considerados en la eleccin.
Comenzaremos con una pequea clasificacin de las operaciones que deberamos poder
realizar.
Movimiento de datos
o Registro-memoria, registro-registro
o Acceso a pila
o Entrada/Salida
Aritmticas
o Entero
o Flotante
o Desplazamientos aritmticos
o Operacin de datos codificados en decimal (BCD, Exceso-3, etc.)
Lgicas
o Operaciones lgicas ms frecuentes, AND, OR, XOR, NOT
o Desplazamientos lgicos y rotaciones
o Test, Set, Reset, Conteo de bits, etc.
Control
o Saltos incondicionales
o Saltos condicionales o bifurcaciones
o Rutinas e interrupciones software
o No clasificadas: NOP, HALT, etc.
A continuacin vamos a plantearnos cules son las caractersticas que debe tener un
buen juego de instrucciones.
Aqu resumimos algunas de las que normalmente se deben exigir a un buen juego de
instrucciones:
Completo. Debe realizar cualquier tarea computable usando recursos finitos (y
razonables).
Eficaz. Alta velocidad de clculo, sin excesivo coste hardware, especialmente en
las funciones ms utilizadas.
Regular. Carencia de casos especiales. No debe sorprender al programador.
(ej.: si hay un desplazamiento a la izquierda, debe haber otro a la derecha)
Compatibilidad hacia atrs con otros juegos de instrucciones del mismo
fabricante. Por motivos econmicos, los fabricantes desean que el software de
modelos precedentes tambin se pueda ejecutar en las nuevas arquitecturas.
Ortogonalidad? No. En los libros ms antiguos de Arquitectura de
Computadores, se sola indicar que todos los operandos deberan poder utilizar
cualquier modo de direccionamiento (ortogonalidad). Hoy en da, las
arquitecturas RISC han descartado esta posibilidad, debido a la excesiva
complejidad que introduce:
o Obliga a incluir Campos de Modo de direccionamiento
o Excesivo uso de la memoria
o Instrucciones ms compleja, difciles de decodificar

Pero sin duda alguna, el criterio ms tenido en cuenta por los arquitectos de
computadores a la hora de incluir o excluir una instruccin del repertorio es la
frecuencia de uso.

Para ello, el uso de conjuntos de programas de prueba o benchmarks proporciona
informacin de la necesidad o no de incluir instrucciones. Como ejemplos, podemos
destacar que la poca frecuencia de uso de la instruccin CALL fue decisiva para que
fuera descartada en las arquitecturas modernas.
Sin embargo, nos encontramos con numerosas excepciones:
Una instruccin poco frecuente, puede ser muy til
o Por eficiencia (el coste de no disponer de ella puede ser elevado)
o Por regularidad
La frecuencia es un trmino relativo
o Las "medidas" de frecuencia no se ajustan a ningn usuario
La compatibilidad es un factor mucho ms considerado por los fabricantes
Otras razones ms ocultas (por ejemplo, el gobierno de E.E.U.U. subvencion a
cierto fabricante, para que incluyera una instruccin poco utilizada, por motivos
estratgicos relacionados con la simulacin de explosiones atmicas a raz de la
moratoria en las pruebas nucleares)
En la ltima transparencia de esta seccin, se muestran, las ms importantes
arquitecturas agrupadas por familias. (Una familia no es ms que un conjunto de
arquitecturas donde existe compatibilidad hacia atrs).

Se ha marcado con una estrella en la parte izquierda la fecha de aparicin de cada nueva
familia. Se observa la irrupcin de nuevas arquitecturas entre los aos 70 a 75, con la
aparicin de los microprocesadores (en lo que se consider como la 4 generacin), y lo
mismo ocurre entre los aos 85 y 90. Precisamente a los micros aparecidos en este
perodo les dedicaremos el siguiente apartado,
Los computadores RISC
Como decamos, entre los aos 85 y 90 se produjo la irrupcin en el mercado de los
microprocesadores de un conjunto (ridge32 fue el primero) de arquitecturas que se
autodenominaron RISC, que se caracterizan por tener un conjunto de instrucciones
relativamente reducido, formados por instrucciones bastante simples .
En esta grfica se muestran los nmeros de instrucciones de algunos computadores
denominados CISC y algunos ejemplos de RISC.

Como se observa, la reduccin en el nmero no es tan significativa, como para atribuir
exclusivamente al nmero de instrucciones las diferencias entre las filosofas RISC y
CISC.

En realidad las caractersticas atribuidas a los RISC son:
Pocas instrucciones y muy simples
Muchos registros y pocos accesos a memoria
Instrucciones de tamao constante
Nmero reducido de formatos de instrucciones
Control cableado (an es pronto para entender este aspecto).
Como conclusin podemos decir que, prcticamente todos los computadores actuales
son RISC, si por RISC entendemos a las arquitecturas que incorporan las tcnicas ms
innovadoras .

Pero sin duda alguna, el origen del trmino RISC procede de la eliminacin de la
propiedad de ortogonalidad a los juegos de instrucciones, y la consecuente supresin del
campo del modo de direccionamiento.
As, la gran revolucin de los RISC se produce al discernir claramente entre el
procesamiento de la informacin y el trabajo que supone localizar la informacin
que est en la memoria.
As, en un computador CISC, podemos, con una sola instruccin, procesar informacin
almacenada en cualquiera lugar y accediendo de cualquier forma a dicha informacin.
Un computador RISC utilizara varias instrucciones elementales para llevar la
informacin a registros, otras instrucciones procesaran la informacin, y nuevas
instrucciones devolveran los resultados al almacn que le corresponde:
Considere dos datos almacenados en las posiciones A, X de memoria. Sea P un lugar de
la memoria que almacena la direccin X (que no se conoce directamente). Se desea
sumar los datos y guardar el resultado en C. Cmo lo hara un computador CISC y uno
RISC?

Solucin CISC: ADD C, A, P?
Solucin RISC:
load R1, A (copiar contenido de A al registro 1)
load R2, P (copiar direccin P al registro 2)
load R3, R2? (copiar contenido de X al registro 1)
add R4,R1,R3
store R4, C (copiar resultado a memoria)

En definitiva, si consideramos el juego de instrucciones como la combinacin entre CO
vlidos y los MD vlidos para cada CO, entonces si que hay una gran diferencia: Los
computadores CISC se caracterizan por tener miles de combinaciones vlidas CO+MD,
mientras que en los RISC, al haber un slo MD vlido para cada CO, entonces las
combinaciones CO+MD coincide con el nmero de CO (aproximadamente entre 50 y
100, nomrmalmente)


Enlaces a esta pgina:
Introduccin

También podría gustarte