Los campos de bits son un número especificado de bits que pueden

Anuncio
CAMPOS DE BITS
Los campos de bits son un número especificado de bits que pueden o no tener un
identificador asociado. Los campos de bits ofrecen una manera de subdividir estructuras
(estructuras, uniones, clases) en porciones de bits nominadas de tamaño definido por el
usuario.
Declarando campos de bits.
Se especifica el campo de bit con un identificador opcional como sigue:
tipo <nombre> : tamaño;
En C++ el tipo puede ser bool, char, unsigned char, short, unsigned short, long, unsigned
long, int, unsigned int, __int64 o unsigned __int64. En C ANSI estricto el tipo es int o
unsigned int.
La expresión tamaño debe estar presente y debe evaluar a una constante entera. En C++,
el ancho de un campo de bits puede ser declarado de cualquier tamaño. En ANSI C estricto,
el tamaño de un campo de bits debería ser declarado solo hasta el tamaño (en bits) del tipo
declarado. Un campo de bits de longitud cero salta a la próxima unidad de definición.
Los campos de bits pueden ser solamente declarados dentro de estructuras, uniones y
clases. Los mismos serán accedidos con los mismos selectores (. y ->) empleados para lo
términos que no representan campos de bits.
Limitaciones en el uso de los campos de bits.
Cuando se emplee campos de bits tener en cuenta los siguientes ítems.
•
El código puede no ser portable debido a que la organización de bits dentro de bytes
y bytes dentro de palabras depende de los equipos.
•
No se puede tomar la dirección de memoria de un campo de bits; así la expresión
&mystruct.x es ilegal si x es un identificador de un campo de bits, debido a que no se
puede garantizar la posición de memoria de mystruct.x. (Recordar que la dirección de
memoria indica la dirección de la memoria del primer bit de la variable y se
incrementa no menos que de 8 en 8 bits).
Ejemplo
struct prueba
{
unsigned int inferior:16;
unsigned int superior:16:
}
Descargar