Donar $20 Donar $50 Donar $100 Donar mensualmente
 


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
Ayuda con Union? [INFO I]
Autor Mensaje
AlexisVieiro Sin conexión
Empleado del buffet
Sin estado :(
*

Otra
Otra

Mensajes: 19
Agradecimientos dados: 18
Agradecimientos: 0 en 0 posts
Registro en: Jul 2014
Mensaje: #1
Ayuda con Union? [INFO I] Apuntes y Guias Informática I (Electrónica)
Hola, tengo una duda! Busque mucho, en serio, pero no logro entender!
Como es que funciona para que me devuelva esas 2 salidas? Se que union guarda varios datos uno a la vez en un mismo espacio en memoria, pero no entiendo que guarda en el int para luego usarlo con el vector de char. Confused


Archivo(s) adjuntos Imagen(es)
   
(Este mensaje fue modificado por última vez en: 23-02-2016 18:54 por AlexisVieiro.)
23-02-2016 18:53
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
luchovl2 Sin conexión
Secretario General
Dígame, Ingeniero.
*******

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 992
Agradecimientos dados: 19
Agradecimientos: 249 en 226 posts
Registro en: May 2009
Mensaje: #2
RE: Ayuda con Union? [INFO I]
Hola Alexis.
Probé el código, y lo que me parece que pasa es que te toma el char como entero negativo. Si ponés en el byte más bajo algo de 0x7f para abajo, anda bien. O sea depende del MSb.
Casteá en el printf (unsigned char). O directamente ponelo en la unión, en lugar de "char".
23-02-2016 21:05
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
diegomsaiz Sin conexión
Profesor del Modulo A
Always on the Run!!
*****

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 215
Agradecimientos dados: 206
Agradecimientos: 119 en 53 posts
Registro en: Aug 2011
Mensaje: #3
RE: Ayuda con Union? [INFO I]
Alexis, coincido con lo que dice Lucho sobre el unsigned char en lugar de char, fíjate lo siguiente:

El byte 1 (MSB) del vector de char, toma el valor 48, que es el esperable para quien lee el resultado.

El byte 0 (LSB) del vector de char, toma el 92, que también sería el esperable, pero acompañado de nibbles "f" hasta completar tu arquitectura (que veo que es de 32 bits). Esto es porque el 92 en hexa equivale a 146 en decimal. Para traducirlo del griego al castellano, hay un overflow del 127 al 146 (19 posiciones, en la tabla pegás la vuelta desde el +127 al -110) hasta llegar al -110. Lo que te indica las "ffffff..." es que el número a representar se excedió de +127 (límite positivo para char).

Por eso te conviene usar vectores de tipo unsigned char, donde el límite positivo es de +255; con la precaución de poner hasta 0x7f (+127), porque 0x80 ya se pasa.

Espero que te haya servido, abrazo!!

"Dos cosas no tienen límite: El universo y la estupidez... Aunque de lo primero, no estoy seguro". (A. Einstein)thumbup3
11-05-2016 18:27
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)



    This forum uses Lukasz Tkacz MyBB addons.