Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: cruz_18 en 9 Mayo 2018, 17:17 pm



Título: Campos de Bit y Union
Publicado por: cruz_18 en 9 Mayo 2018, 17:17 pm
Hola muy buenos dias.
 Soy nuevo en el Foro y me pido por favor por su ayuda, ya que estoy en la universidad y hay un tema del cual no entiendo. Se llama campo de bit y union alguien me puede explicar. agradezco su ayuda


Título: Re: Campos de Bit y Union
Publicado por: MAFUS en 9 Mayo 2018, 18:03 pm
Una unión sirve para que una misma zona de memoria pueda tener diferentes identificadores y cada uno de ellos pueden tener un tamaño diferente.

Todos empezarán en la misma dirección de memoria. La unión, el objeto en sí, tendrá el mismo tamaño del identificador de mayor tamaño que se le haya definido.

Por ejemplo puedes unir un tipo unsigned int, de 4 bytes, con un array de 4 unsigned char, de esta forma podrías acceder a ese entero byte a byte o todo el conjunto de una tacada.



Por otra parte está el mapa de bits que se declara igual que una estructura pero asignándole a cada variable el número de bits que debe ocupar. Por ejemplo, si se declara una variable unsigned de tres bits solo manejará datos de 0 a 7, si es más de 7 el overflow hará que empiece con 0 otra vez. El como maneje C la colocación de los campos de bits no está definido en el estándar así que depende de cada compilador el cómo los vaya a colocar. De normal intentará cuadrarlos en posiciones de memoria que sean potencia de 2 para acceder de forma más rápida. De igual forma se puede forzar ese comportamiento con variables de 0 bits. Eso indica al compilador que cuadre el siguiente elemento.