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
 Mi Blog 
  
 Sitios Amigos
 Casas Rurales
 Directorio Web

 
[más enlaces] 
  
 Contenidos > 5.3 Complemento a 1 (Complemento a la Base Menos 1)
En este sistema de representación, los números positivos se expresan igual que en Signo Magnitud o que en Binario Puro. Sin embargo, para escribir los números negativos se utiliza el Complemento a la Base Menos 1. De forma normalizada, el Complemento a la Base Menos 1 de un número entero positivo N de base b, se expresa de la siguiente manera:

Cb-1(N) = bn - 1 - N

siendo n el número de cifras destinadas a representar al número. Por tanto, en codificación binaria, el Complemento a 1 (C1) de un número entero positivo (N) se puede expresar como:

C1(N) = 2n - 1 - N = NC1

En Complemento a 1, el rango de representación es el mismo que en Signo Magnitud:

Rango de representación en Complemento a 1

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

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

Ejemplo: rango de representación en Complemento a 1

Así pues, se pueden representar 216 - 1 = 65535 números enteros, que van desde el -3276710 hasta el 3276710.

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

Ejemplo: número en Complemento a 1

Por tanto,

950310 = 0010010100011111C1 = 0010010100011111SM = 0010010100011111BP

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

C1(N) = C1(10010100011111) =

= 2n - 1 - N =

= 216 - 1 - 10010100011111 =

= 10000000000000000 - 1 - 10010100011111 =

= 1101101011100000C1

En consecuencia,

-950310 = 1101101011100000C1

Obsérvese que, el Complemento a 1 de un número entero positivo (N) escrito en binario es el resultado de cambiar todos los bits de valor, es decir, todos los ceros por unos y todos unos por ceros.

Ejemplo: número en Complemento a 1

Por otra parte, dado un número entero positivo (N) en Complemento a 1, para calcular su valor en base 10, se puede utilizar la misma fórmula que en Signo Magnitud o que en Binario Puro.

Un número (N) representado en Complemento a 1 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, habrá que cambiar todos los unos por ceros y todos los ceros por unos, obteniendo así su correspondiente número positivo, al cual sí se le puede aplicar una de las fórmulas anteriores y cambiarle el signo al resultado.

Ejemplo 4: Si se desea calcular el valor en base 10 del número 1111101011111101C1, puesto que el bit más significativo es un 1, sabemos que es negativo, por tanto, en primer lugar, cambiaremos los ceros por unos y los unos por ceros:

1111101011111101C1(negativo)  0000010100000010C1(positivo)

y, en segundo lugar, calcularemos el valor en base 10 del número obtenido, con la misma fórmula que se emplea para los números escritos en Signo Magnitud:

0000010100000010C1 = ( (1 - 2∙0) ∙ (1∙210 + 1∙28 + 1∙21) )10 =

= ( (1) ∙ (1024 + 256 + 2) )10 = 128210

o con la misma fórmula utilizada para números representados en Binario Puro:

0000010100000010C1 = ( 1∙210 + 1∙28 + 1∙21 )10 = ( 1024 + 256 + 2 )10 = 128210

De forma que:

1111101011111101C1(negativo) = -( 0000010100000010C1(positivo) )10 = -128210

es decir,

1111101011111101C1 = -128210

Por otro lado, al igual que ocurría en Signo Magnitud, el número 010 también tiene dos representaciones en Complemento a 1.

Ejemplo 5: Para n = 16, el número 010 se puede escribir de dos formas en Complemento a 1:

010 = 0000000000000000C1 = 1111111111111111C1
 Más información
Texto extraído del apartado 2.5.3 Complemento a 1 (Complemento a la Base Menos 1) del libro EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C, (páginas 49-52).
 Contenidos > Apartado siguiente
5.4 Complemento a 2
Búsqueda personalizada
 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
 Secciones
Inicio Libros Librerías Mapa Web Artículos Cursos Ejercicios Guías de uso Mini Diccionario Enlaces Carlos Pes Mi Blog
© Carlos Javier Pes Rivas, 2006-2008
Política de privacidad - Contactar