Autor Tema: Numeros negativos  (Leído 5397 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Numeros negativos
« 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.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Numeros negativos
« Respuesta #1 en: 22 de Abril de 2009, 11:46:38 »
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
Código: [Seleccionar]
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?

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: Numeros negativos
« Respuesta #2 en: 22 de Abril de 2009, 12:41:04 »
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.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Numeros negativos
« Respuesta #3 en: 22 de Abril de 2009, 12:54:04 »
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.

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: Numeros negativos
« Respuesta #4 en: 22 de Abril de 2009, 17:32:24 »
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

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Numeros negativos
« Respuesta #5 en: 23 de Abril de 2009, 01:16:40 »
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
El papel lo aguanta todo

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: Numeros negativos
« Respuesta #6 en: 23 de Abril de 2009, 10:36:57 »
Hola MLO, gracias por participar,

No comprendo lo que me propones; supongamos, tengo una variable con -125 como la puedo pasar a string...

gracias

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Numeros negativos
« Respuesta #7 en: 23 de Abril de 2009, 13:46:04 »
Hola.

La pasas con la funcion sprintf();

Saludos
El papel lo aguanta todo

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: Numeros negativos
« Respuesta #8 en: 24 de Abril de 2009, 11:53:36 »
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.


 

anything