TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Diego E. en 22 de Abril de 2009, 11:21:41
-
Hola grupo, me pueden explicar un poco como manejar números negativos en lenguaje C ?, en assembler utilizo el carry y luego complemento a 2.
otra duda que tengo es con las variables flotantes "float" manejo de decimales
gracias.
-
Para números negativos usa la declaración de variables con signed:
signed int8 var;
signed int16 var;
O decláralas como flotantes que son números con punto decimal y sus operaciones son más lentas que con números enteros.
float var;
Para saber si un número entero es negativo solo pones
if(var<0)
printf("El número es negativo");
else
printf("El número no es negativo");
Sobre tu pregunta de decimales, ¿en qué tienes duda?
-
migsantiago gracias por responderme,
probé con una variable signed y efectivamante funciona, aparece el signo, ahora mi dida es como pasar este valor a BCD.
lo mismo me sucede con la variable flotante
gracias.
-
Solo podrás convertir enteros a BCD, el flotante es más complejo, según el siguiente link:
http://forum.htsoft.com/all/showflat.php/Cat/0/Number/2740/an//page//vc/1
Talvez debas modificarlo para que involucre el signo.
-
migsantiago, veo que con el número negativo talvez deba utilizar la lógica del assembler, complementar a 2 descomponer en BDC; ahora con el número flotante si lo veo difícil.
gracias
-
Hola.
Pues yo lo pasaria a un string primero y luego lo pasaria a numero para que quede BCD, solo seria restarle '0' e identificar el punto y el signo.
Saludos
-
Hola MLO, gracias por participar,
No comprendo lo que me propones; supongamos, tengo una variable con -125 como la puedo pasar a string...
gracias
-
Hola.
La pasas con la funcion sprintf();
Saludos
-
MLO, tienes razón con la función sprintf puedo extraer el BCD como ascii
float conta;
char bcd[5];
void main() //Rutina principal
{
conta = 15.5;
while(true)
{
sprintf(bcd,"%f",conta);
}
}
esto es lo que necesito
mil gracias.