Você está na página 1de 3

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. 3. Cambie los 1 por 0. Cambie los 0 por 1. Smele 1. Construya la representacin de -10100 en 8 bits.

Ejemplo: 1. 2. 3.

00010100 11101011 + 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. 2. 8510 -8510
binario

> 10101012 > -10101012

formato

> 01010101 > 10101011

vuelco

> 55 > AB.

binario

formato*

vuelco

*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. iii. Cambiamos el bit de cero a uno y el bit de uno a cero: 10101010. 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. 4. -14510 binario > -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 11010011 Ejemplo 2 11000000 11100000 10100000

no carry-over no overflow

carry-over no overflow

Ejemplo 3 01010000 01100001 10110001

no carry-over overflow

Ejemplo 4 10000010 10000110 00001000

carry-over overflow

Você também pode gostar