[ Foro de C ]

Complemento a 1

30-Jun-2006 02:38
Eladio San Romn Sevillano
5 Respuestas

Capítulo 2b. Tipos de datos básicos
2.1.9. Representación interna de los enteros
Complemento a 1: No veo la forma de comprobar los resultados. En los intentos que he hecho los resultados son disparatados. Supongo que lo estoy entendiendo mal.
Si alguien puede echarme un cable, le quedaré muy agradecido.

Eladio.

30-Jun-2006 18:08
Javier Hernndez

Si no e leido mal el truco está en sustituir los 1 por 0 y los 0 por 1 para decir que el primer numero es negativo por ejemplo:

1001 --> 9
0110 --> -9

Lo malo es que tambien podría ser 0110 --> 6

Espero que te sirva

Un saludete

04-Jul-2006 16:17
Nacho Cabanes (+30)

Consiste en cambiar los 0 por 1 en la expresión binaria del número.

Por ejemplo, si usas números de 8 bits, el 62 es
00111110

Entonces, el -62 sería
11000001

Así de sencillo.


El problema es que eso hace que puedas almacenar sólo la mitad de números de los que podrían llegar a caber en 8 bits: tienes desde -128 a +127, en vez de tener desde 0 a 255.

Si sabes que vas a usar sólo números positivos, no negativos, se podría hacer corresponder 11000001b = 193

Es decir: con 8 bits, el número 193 y el -62 se almacenan igual. Eres tú, como programador quien debe saber cual de los dos posibles significados es el correcto para tu problema.

N.


05-Jul-2006 23:59
Eladio San Romn Sevillano

Muchas gracias por su consejo.
La verdad es que estaba un poco pez en sistemas de numeración. Ya estoy algo mejor informado. Encontre un buen maunal en la Red.
Otra duda: en el nº 11000001b, ¿que significa la 'b' final.

Un saludo.. Eladio

06-Jul-2006 15:50
Javier Hernndez

Que es binario y si ves un numero que tiene una 'o' es octal y si es una 'h' (creo que era una h) hexadecimal


06-Jul-2006 22:54
Eladio San Romn Sevillano

Muchísimas gracias Javier. Debía hablerlo imaginado. Pero creí que de los ceros y unos ya se deducía. Estaba equivocado. Ceros y unos pueden aparecer en cualquier sistema de numeración.
De todas formas me despistó el hecho de ir detras... En el caso de octal y hexadecimal - y me refiero al introducirlos en C, siempre los he visto delante del número.

Muchas gracias otra vez.

Un cordial saludo... Eladio






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)