Blog en Blogger Blog en BuscoAfiliados Bookmarks en Delicious Perfil el Facebook Perfil en Twitter Fotos en Flickr Página en MySpace Canal en YouTube Perfil en Google Perfil en Google
Búsqueda personalizada
Curso de Representación de los Datos
 Principal
 Inicio
 Libros
 Librerías
 Bibliotecas
 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
 Perfiles
 Taller de ideas 
  
 Otros Proyectos
 Blog Carlos Pes
 Grupo Google
 Fotografías
 Proyecto CP
 Recetas cocina
 Blog en BA 
  
 Sitios Amigos
 Enlaces
  
 Contenidos > 5.4 Complemento a 2 (Complemento a la Base)
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
Directorio de Empresas
Búsqueda personalizada
 Más Webs Interesantes
© 2006-2010 CarlosPes.com