[ Foro de C ]
Complemento a 1
Eladio San Román Sevillano
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.
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
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.
Eladio San Román 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
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
Eladio San Román 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.)