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: }