Sunteți pe pagina 1din 5

FORMATO COMPLEMENTO-A-DOS

El
formato
de
representacin
de
nmeros
enteros
por
complementacin ideal para el computador es el formato llamado
Complemento-a-Dos. Abreviaremos su nombre a C-a-2. Como su
nombre indica, ste es un formato que complementa a la base del
sistema numrico usado. Al igual que hicimos con el formato C-a-10,
una vez tenemos la cantidad de posiciones que estaremos usando en
la escritura, calculamos la totalidad de representaciones disponibles y
dividimos stas usando una mitad del total para representar nmeros
negativos y la otra mitad para representar el cero y los positivos. La
gran ventaja de este formato es que integra el signo del nmero en la
escritura y al momento de hacer aritmtica, las cosas se facilitan
grandemente porque no hay que estar examinando el signo de los
operandos.
La gran mayora de las aplicaciones comunes usan datos enteros en
sistema decimal, por lo tanto, toda operacin de Entrada/Salida
requerir que los datos sean convertidos a sistema binario primero y
luego llevados a formato. En el caso de datos positivos, stos pasan a
la representacin directamente tomando slo en cuenta el espacio
finito y fijo de trabajo. Si el dato es negativo, en adicin, se requiere
la complementacin.
DEFINICION:
El formato Complemento-a-Dos es un formato para representar
nmeros con signo fundamentado en el sistema posicional de
escritura con base dos: el sistema binario. Primero, se establece el
espacio de trabajo, es decir, el nmero de posiciones binarias de
escritura o bits. A m bits tenemos 2m representaciones disponibles.
Usamos la mitad de stas para representar los nmeros negativos y la
otra mitad para representar el cero y los nmeros positivos. La
representacin del cero y la asignada a cada entero positivo
corresponde a su escritura en sistema binario, tan slo aadimos
ceros al frente para completar el total de bits a la escritura fija de ser
necesario. Reconoceremos que una representacin corresponde a un
nmero positivo porque siempre comienza con un bit de cero.En el
caso de que la cantidad sea negativa, para buscar su representacin,
es necesario llevar acabo el proceso de complementacin. ste
consiste en buscar la diferencia (cunto le falta) de la magnitud, al
total de representaciones posibles (2m).
COMO COMPLEMENTAR
Necesitamos complementar solamente cuando vamos a buscar la
representacin de un nmero negativo o cuando vamos a leer un
formato que corresponde a negativo. Buscar el complemento de una
cantidad es determinar la diferencia de la cantidad al total de
representaciones. Esta operacin la hacemos directamente en

sistema binario. Note que al trabajar a un espacio de m posiciones,


como hemos dicho anteriormente, el total de representaciones
disponibles es 2m ; esta cantidad al escribirla en sistema binario es
1000...0 ( un uno seguido de m ceros). Esto implica que al hacer la
resta siempre tendremos arriba (el disminuendo) ceros, lo que nos
obliga a tomar prestado de la posicin ms significativa (la que tiene
el uno), situacin no muy cmoda que digamos. Por eso, vamos a
realizar la resta 2m - 1, cuya escritura en binario es 11111...1 (m
unos) y al resultado le sumamos 1 para compensar. Ahora no es
necesario tomar prestado en la resta y ms aun, cuando estamos
restando a un bit que contiene 1 en el disminuendo, el resultado es
justo el valor opuesto del bit en el substraendo. Note que 1 - 1 = 0, 1
- 0 = 1. Esto lo podemos resumir en la receta siguiente:
1.
Escriba el nmero en binario al espacio de trabajo. Es decir,
aada ceros al frente si los necesita. Ignore el signo. Slo
complementamos si el nmero es negativo.
2.

Cambie los 1 por 0. Cambie los 0 por 1.

3.

Smele 1.

Ejemplo:

Construya la representacin de -10100 en 8 bits.

1.

00010100

2.

11101011

3.

+ 1 = 11101100

*Reconoceremos la representacin de una cantidad negativa porque


sta siempre empieza con un bit de uno.
A continuacin, se ilustra cmo se maneja este formato al realizar
operaciones de Entrada/Salida, imaginando operaciones de acceso,
de grabar (el write) y de leer (el read).
WRITE
Vamos a presuponer que estamos trabajando en 8 bits para los
ejemplos que siguen.
1.

8510

binario

> 10101012

2.

-8510

binario

> -10101012

formato

> 01010101

formato*

> 10101011

vuelco

> 55

vuelco

> AB.

*En este caso, como el nmero es negativo, tenemos que pasar por el
proceso de complementacin para llevar a formato. Es decir:

i. Escribimos la magnitud del nmero al espacio de trabajo, aqu


necesitamos aadir un cero no-significativo al frente: 01010101.
ii.

Cambiamos el bit de cero a uno y el bit de uno a cero: 10101010.

iii.

Le sumamos uno: 10101010 + 1 = 10101011

3.
14510 binario > 100100012 formato > 10010001. Pero esto no
puede ser. Los formatos correspondientes a nmeros positivos
comienzan con un bit de cero. Lo que est sucediendo es que el
nmero es demasiado grande para el espacio de trabajo.
binario
4.
-14510
> -100100012 formato > 01101111. De nuevo,
reconocemos que esto no puede ser porque los formatos
correspondientes a cantidades negativas comienzan con un bit de
uno. Como el nmero es demasiado grande en tamao, tenemos un
problema de overflow.

READ
Miraremos ahora algunos ejemplos donde dado un contenido en su
representacin hexadecimal lo interpretamos bajo el formato C-a-2 .
Recordemos que cada caracter hexadecimal representa cuatro bits.
El nmero de caracteres que representa el contenido nos indica
implcitamente el espacio de trabajo. Al leer un contenido bajo un
formato de entero, esperamos como resultado un entero. Es ms
cmodo expresar el resultado directamente en sistema hexadecimal
para evitar tener que hacer cambios de base que impliquen clculos.
1. 6A formato > 01101010 lectura > 6A16. Como el formato empieza
con cero, sabemos que corresponde a un entero positivo y su lectura
es directa: 1101010 en binario, 6A en sistema hexadecimal.
2. E277 formato > 1110001001110111 lectura > -1D8916. En este
caso, el formato comienza con uno, por lo tanto, representa una
cantidad negativa y para leer su magnitud tenemos que
complementar.
No
olvidemos
de
escribir
el
signo
explcitamente.
La complementacin explicada arriba parte de nmeros escritos en
binario. Si abreviamos la escritura binaria usando caracteres
hexadecimales, es decir, representando por su correspondiente
caracter hexadecimal cada grupo de cuatro bits, entonces nos sera
ms fcil hacer la complementacin directamente con los carcteres
hexadecimales. Slo tenemos que darnos cuenta que en el segundo
paso de la receta para complementar, el cambiar cada bit por su valor
opuesto equivale a restar de 1111...1. En otras palabras, al escribir
este disminuendo en hex, estariamos restando de FF...F. As que
podemos complementar directamente en hexadecimal restando cada

caracter hexadecimal de F y despus sumando uno a la posicin de


las unidades.
En los prximos dos ejemplos trabajamos directamente en sistema
hexadecimal.
3.

00042123

lectura

> 4212316

4. FFFC2045 lectura > -3DFBB16. Cuando el contenido que estamos


leyendo comienza con un caracter de 8 o ms, equivale a un formato
empezando con uno en binario, y para leer tenemos que
complementar.
ALCANCE
Mximo: El nmero ms grande que podemos representar en m
bits es 2m-1 - 1.
Mnimo: El nmero ms pequeo representable usando m bits es
-2m-1. Es decir, el negativo de tamao mayor.
ARITMETICA
El formato C-a-2 es ideal para hacer aritmtica. Se suman los
formatos sin importar que representan en una suma binaria. Como
en otros formatos, tomamos nota en cuanto a las condiciones de
carry-over y/o overflow. En este formato se pueden dar todas la
cuatro combinaciones en cuanto a carry-over y overflow. Al tener
carry-over, el bit se pierde.
Ejemplo 1
01000011
10010000

Ejemplo 2
no carry-over
no overflow

11000000
11100000

11010011

10100000

Ejemplo 3

Ejemplo 4

01010000
01100001
10110001

carry-over
no overflow

10000010
no carry-over
overflow

10000110
00001000

carry-over
overflow

S-ar putea să vă placă și