Saludos soy nuevo por aca! bueno realmente he visitado infinidades de veces este foro... pero nunca para "postear" algo, ya que todo parece estar acá jajaja.
Esta web me ha ayudado infinidad de veces!!!!
El asunto no es para pedir ayuda( no por el momento).
Se me presentó una situación particularmente estupida en estos días en la que necesitaba sumar dos (2) números hexadecimales.
Cuestión a mi parecer muy sencilla.
y por mas que busqué información al respecto no di con ella.
Les comento:
intentaba sumar por ejemplo 0xFF + 0xAA=0x01A9. Asumiendo que el resultado de la suma será de 2 bytes o 16 bits.
Para lo que:
int16 suma_hex=0xFF+ 0xAA; //Asumiendo que el resultado final es una variable de 16 bits
printf("El resultado es: %LX"suma_hex);
->El resultado es: 01A9 (Mostrando correctamente el valor)
Pero al hacer los sumandos, como variables;
int x,y;
x=0xFF;
y=0xAA;
int16 suma_hex=x+y; //Asumiendo que el resultado final es una variable de 16 bits (2 bytes)
printf("El resultado es: %LX"suma_hex);
->El resultado es: A9 (Mostrando solo el byte menos significativo de la suma y "comiendose" el byte más significativo )
¿El error? -> int x,y;
Estas variables deben ser declaradas también como int16..A pesar que que ellas por si solas no sobrepasen los 8 bits (1 byte).
int16 x,y;
x=0xFF;
y=0xAA;
int16 suma_hex=x+y; //Asumiendo que el resultado final es una variable de 16 bits (2 bytes)
printf("El resultado es: %LX"suma_hex);
->El resultado es: 01A9 (Mostrando correctamente el valor)
Es decir, si voy realizar una suma hexadecimal donde el resultado es mayor que el valor 0x00FF, debo declarar estas variables como int16
Se que es una estupidez pero esto me me sacó de mis cabales hasta que di con ello, y lo coloco acá por si alguien alguna vez tiene este pequeño pero fastidioso detalle.
Cabe acotar que llevo 2 semanas programando en CCS.
P.D. Si deben eliminar este post por su poca utilidad no hay problema.
Un saludo y les agradezco a todos los usuarios que se encuentran en esta web por su gran labor.