Autor Tema: Suma de dos int8  (Leído 2530 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado NelsonPIC

  • PIC10
  • *
  • Mensajes: 12
Suma de dos int8
« en: 01 de Julio de 2004, 09:44:00 »
necesito realizar la suma de dos int8 y dejarlo en un int16,
he utilizado el siguiente codigo

int8 dato1;
int8 dato2;
int16 dato3;

main

dato1=0xff;
dato2=0xff;

while(true)

dato3=dato1<<8 + dato2

el resultado deberia ser 0xffff pero el resultado es 0x00ff,
si alguien conoce como resolver el tema, por favor me lo haga saber


Nelson

Desconectado Ginho_rj

  • PIC12
  • **
  • Mensajes: 87
RE: Suma de dos int8
« Respuesta #1 en: 01 de Julio de 2004, 10:58:00 »
Escrito originalmente por NelsonPIC
necesito realizar la suma de dos int8 y dejarlo en un int16,
he utilizado el siguiente codigo

int8 dato1;
int8 dato2;
int16 dato3;

main

dato1=0xff;
dato2=0xff;

while(true)

dato3=dato1<<8 + dato2

el resultado deberia ser 0xffff pero el resultado es 0x00ff,
si alguien conoce como resolver el tema, por favor me lo haga saber


Nelson



int8 dato1;
int8 dato2;
int16 dato3;

main
{
dato1=0xff;
dato2=0xff;

while(true)

dato3=(dato1<<8) + (dato2 & 65535)


}


Desconectado pikman

  • Moderador Local
  • PIC24F
  • *****
  • Mensajes: 679
RE: Suma de dos int8
« Respuesta #2 en: 01 de Julio de 2004, 23:24:00 »
Hola,  mira el manual de CCS pagina 97

debes usar MAKE16 aqui tienes el ejemplo del manual

long x;

int hi,lo;

x = make16(hi,lo);

 

creo que no es precisamente una suma lo que pretendes si entiendo bien, esto funciona, y tambien puedes usar otras opciones como MAKE8 o MAKE32 te recomiendo mirar el manual, o sencillamente el help del compilador,

saludos

ARIEL

 
saludos
PikMan

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: Suma de dos int8
« Respuesta #3 en: 02 de Julio de 2004, 01:57:00 »
Si lo que quieres es sumar 2 enteros y cabe la posibilidad de que haya desbordamiento (resultado mayor que 255) yo lo haría así:

   int16 dato1,dato2,dato3;

   dato1=0xff;
   dato2=0xff;
   
   dato3=dato1+dato2;



Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1685
    • winpic800
RE: Suma de dos int8
« Respuesta #4 en: 02 de Julio de 2004, 05:15:00 »
si pocher , es la forma correcta , no entendia la pregunta .
 

Desconectado pikman

  • Moderador Local
  • PIC24F
  • *****
  • Mensajes: 679
RE: Suma de dos int8
« Respuesta #5 en: 02 de Julio de 2004, 19:10:00 »
Bueno, NElson explica que quiere sumar dos variables de 8 bits y dice

var1=0xff
var2=0xff

entonces var1+var2= 0x1fe  

pero el dice deberia ser 0xffff, entonces no es una suma lo que se pretende.

para esto hay que usar MAKE16 o lo que explica Ghino que es basicamente lo mismo que hace la funcion, entonces NElson que es lo que quieres hacer?.

saludos

Ariel
saludos
PikMan

Desconectado cHiPmAn

  • PIC16
  • ***
  • Mensajes: 110
RE: Suma de dos int8
« Respuesta #6 en: 03 de Julio de 2004, 03:35:00 »
Holas,

desconozco el compilador que usais. Yo lo haria así:

unsigned char i;    // Parta baja Lo
unsigned char k;   // Parte alta Hi

unsigned int j;

i=0xFF;
k=0xFF;

j=(unsigned int) (i+k);   // suma Resultado j=0x1FE
j=(k<<8)+i;                    // Resultado j=0xFFFF

supongo que en la mayoria de compiladores ansi tiene que funcionar.

Salu2!

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: Suma de dos int8
« Respuesta #7 en: 03 de Julio de 2004, 11:00:00 »
Con C de CCS eso no va a funcionar, ya que las especificaciones de tipo son:

int1 Defines a 1 bit number

int8 Defines an 8 bit number

int16 Defines a 16 bit number

int32 Defines a 32 bit number

char Defines a 8 bit character

float Defines a 32 bit floating point number

short By default the same as int1

Int By default the same as int8

long By default the same as int16

void Indicates no specific type