Búsqueda personalizada
Curso de Representación de los Datos
 Principal
 Inicio
 Libros
 Librerías
 Mapa Web
 
 Recursos
 Artículos
 Cursos
 Ejercicios
 Guías de uso
 Mini Diccionario 
  
 Sintaxis
 ANSI C
 Ordinogramas
 Pascal
 Pseudocódigo 
  
 Acerca de
 Carlos Pes
 Colaboradores
 Taller de ideas 
  
 Sitios Amigos
 Blogs,...
 Informática,...
 Directorios,...
 Empresas,...
 Gente,...
 Ocio,...
 Tutoriales,...
  
 Mis Blogs en
 Blogger
 BuscoAfiliados 
  
 Contenidos > 5.4 Complemento a 2 (Complemento a la Base)
En este sistema de representación, los números positivos se expresan igual que en Complemento a 1, Signo Magnitud o Binario Puro. Sin embargo, para escribir los números negativos se utiliza el Complemento a la Base. Formalmente, el Complemento a la Base de un número entero positivo N de base b, se expresa del siguiente  modo:

Cb(N) = bn - N

siendo n el número de cifras empleadas en la representación del número. Por tanto, en codificación binaria, el Complemento a 2 (C2) de un número entero positivo (N) se puede expresar como:

C2(N) = 2n - N = NC2

El rango de representación en Complemento a 2 es:

Rango de representación en Complemento a 2

Figura. Rango de representación en Complemento a 2.

Ejemplo 1: En Complemento a 2, para n = 16, el rango de representación es:

Ejemplo: rango de representación en complemento a 2

Ejemplo 2: En Complemento a 2, para n = 16, el número positivo 950310 se representa igual que en Complemento a 1, Signo Magnitud o Binario Puro:

950310  = 0010010100011111C2 = 0010010100011111C1 =

= 0010010100011111SM = 0010010100011111BP

Ejemplo 3: En Complemento a 2, para n = 16, el número -950310 se escribe calculando el Complemento a la Base del número 950310 representado en base 2, es decir, del número 100101000111112:

C2(N) = C2(10010100011111) =

= 2n - N =

= 216 - 10010100011111 =

= 10000000000000000 - 10010100011111 =

= 1101101011100001C2

En consecuencia,

-950310 = 1101101011100001C2

Fíjese que, el Complemento a 2 de un número entero positivo (N) escrito en binario es el resultado de cambiar todos los bits de valor (ceros por unos y unos por ceros), obteniendo así el Complemento a 1 del número y, después, sumarle 1.

C2(N) = C1(N) + 1 = NC1 + 1 = NC2

De esta manera, en tan solo dos pasos se puede calcular, fácilmente, el Complemento a 2. Por ejemplo, dado el número:

Ejemplo: número en Binario Puro

para calcular el Complemento a 2, en un primer paso se calcula el Complemento a 1 de dicho número:

Ejemplo: número en Complemento a 1

y, en un segundo paso, se le suma 1 al número obtenido en Complemento a 1:

Ejemplo: número en base 2

El resultado es el esperado:

Ejemplo: número en Complemento a 2

Por otro lado, si se pretende calcular el valor en base 10 de un número entero positivo (N) escrito Complemento a 2, se puede usar la misma fórmula que en Signo Magnitud o que en Binario Puro.

Un número (N) representado en Complemento a 2 es positivo si el bit más significativo es cero. En caso contrario, el número será negativo, y para calcular su valor en base 10, se tiene que utilizar la fórmula:

Fórmula de Complemento a 2 a base 10

Figura. Fórmula para calcular, en base 10, el valor de un número entero negativo escrito en Complemento a 2.

Ejemplo 4: Para calcular el valor en base 10 del número 1001000000000110C2, se debe emplear la fórmula anterior. De tal forma que:

1001000000000110C2 = ( (-1∙215) + (1∙212 + 1∙22 + 1∙21) )10 =

= ( (-32768) + (4102) )10 = -2866610
 Más información
Texto extraído del apartado 2.5.4 Complemento a 2 (Complemento a la Base) del libro EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C, (páginas 52-54).
 Contenidos > Apartado siguiente
5.5 Exceso a 2n-1
 A destacar
Cursos Ejercicios Libros Enlaces Recomendados
Curso Diseño de Algoritmos
Curso Informática Básica
Curso Ingeniería del Software
Curso Marketing en Internet
Curso Lenguaje C
Curso Turbo Pascal
Curso Representación Datos
Ejercicios de Algoritmos
Ejercicios de Lenguaje C
Ejercicios de Ordinogramas
Ejercicios de Pascal
Empezar de cero a programar en lenguaje C
Domine la programación en lenguaje C
Empezar de cero a programar en Pascal
Búsqueda personalizada
 Más Webs Interesantes
© 2006-2008 CarlosPes.com