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

0 Usuarios y 1 Visitante 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



 

anything