Red de conocimiento informático - Material del sitio web - Nombre de dominio compuestoAl almacenar cierta información, no es necesario que ocupe un byte completo, solo se necesitan unos pocos o un bit binario. Por ejemplo, para almacenar un interruptor que sólo tiene dos estados: 0 y 1, puede utilizar un bit binario. Para ahorrar espacio de almacenamiento y simplificar el procesamiento, el lenguaje C también proporciona una estructura de datos llamada "campo de bits" o "segmento de bits". El llamado "campo de bits" consiste en dividir el binario de un byte en varias áreas diferentes y especificar el número de bits en cada área. Cada dominio tiene un nombre de dominio que permite operaciones dentro del programa a través del nombre de dominio. De esta manera, se pueden representar varios objetos diferentes mediante un campo de bits binarios de un solo byte. 1. Definición de campo de bits y descripción de variables de campo de bits La definición de campo de bits es similar a la definición de estructura. Su forma es: estructura nombre de estructura de campo de bits {lista de campos de bits}; es: tipo descriptor bit Nombre de dominio: longitud del campo de bits, por ejemplo: struct bs { int a: 8; int b: 2; int c: 6; variable de estructura. Puede definir primero y luego explicar, definir mientras explica o explicar directamente. Por ejemplo: struct bs { int a: 8; int b: 2; int c: 6; indica que los datos son una variable bs, * * * ocupa dos bytes. Entre ellos, el campo de bits A ocupa 8 bits, el campo de bits B ocupa 2 bits y el campo de bits C ocupa 6 bits. Hay varias interpretaciones de la definición de campos de bits: 1) Un campo de bits debe almacenarse en el mismo byte y no puede abarcar dos bytes. Si no hay suficiente espacio en un byte para almacenar otro campo de bits, el campo de bits debe almacenarse comenzando en la siguiente ubicación. También es posible hacer que un dominio comience intencionalmente en la siguiente celda. Por ejemplo: struct bs { unsigned A: 4 unsigned: 0/* airspace */ unsigned B: 4/* store from next unit */ unsigned c: 4} En esta definición de campo de bits, A ocupa los primeros 4 bits del byte, el Los últimos 4 bits se rellenan con 0 para indicar que no se utilizan, B ocupa 4 bits a partir del segundo byte y C ocupa 4 bits. 2) Dado que no se permite que el campo de bits abarque dos bytes, la longitud del campo de bits no puede ser mayor que un byte, es decir, no puede exceder los 8 bits binarios. 3) Un campo de bits no puede tener un nombre de dominio de bits, en cuyo caso sólo se utiliza para relleno o ajuste de posición. No se pueden utilizar campos de bits sin nombre. Por ejemplo: struct k {int a: 1 int: 2 /*Estos dos bits no se pueden usar*/int b: 3 int c: 2} Del análisis anterior, podemos ver que el campo de bits es esencialmente un tipo de estructura; , pero los miembros de se asignan mediante binario. 2. Uso de campos de bits El uso de campos de bits es el mismo que el uso de miembros de estructura. Su forma general es: nombre de variable de campo de bits El nombre del campo de bits permite la salida en varios formatos. ejemplo 12.6 principal(){ estructura bs { sin firmar a: 1; sin firmar b: 3; sin firmar c: 4; printf( "d , d, d\n ", bit.a, bit.b, bit . c); pbit = amp bit; pbit- gt; a = 0; pbit- gt; b amp=3; pbit- gt; c | = 1; printf("d, d, d\n ", pbit- gt; 1, pbit- gt; b, pbit- gt; c } El programa de ejemplo anterior define la estructura del campo de bits bs, tres Los campos de bits son a, b, c, b, c respectivamente, que explican la variable bit de tipo bs y la variable puntero pbit que apunta al tipo bs. Esto significa que los punteros también se pueden utilizar con campos de bits. Las líneas 9, 10 y 11 del programa asignan valores a tres campos de bits respectivamente (cabe señalar que la asignación no puede exceder el rango permitido de este campo de bits). La línea 12 del programa genera el contenido de los tres campos en formato de número entero. La línea 13 envía la dirección de la variable de campo de bits a la variable de puntero pbit. En la línea 14, el puntero reasigna el campo de bits A a 0.

Nombre de dominio compuestoAl almacenar cierta información, no es necesario que ocupe un byte completo, solo se necesitan unos pocos o un bit binario. Por ejemplo, para almacenar un interruptor que sólo tiene dos estados: 0 y 1, puede utilizar un bit binario. Para ahorrar espacio de almacenamiento y simplificar el procesamiento, el lenguaje C también proporciona una estructura de datos llamada "campo de bits" o "segmento de bits". El llamado "campo de bits" consiste en dividir el binario de un byte en varias áreas diferentes y especificar el número de bits en cada área. Cada dominio tiene un nombre de dominio que permite operaciones dentro del programa a través del nombre de dominio. De esta manera, se pueden representar varios objetos diferentes mediante un campo de bits binarios de un solo byte. 1. Definición de campo de bits y descripción de variables de campo de bits La definición de campo de bits es similar a la definición de estructura. Su forma es: estructura nombre de estructura de campo de bits {lista de campos de bits}; es: tipo descriptor bit Nombre de dominio: longitud del campo de bits, por ejemplo: struct bs { int a: 8; int b: 2; int c: 6; variable de estructura. Puede definir primero y luego explicar, definir mientras explica o explicar directamente. Por ejemplo: struct bs { int a: 8; int b: 2; int c: 6; indica que los datos son una variable bs, * * * ocupa dos bytes. Entre ellos, el campo de bits A ocupa 8 bits, el campo de bits B ocupa 2 bits y el campo de bits C ocupa 6 bits. Hay varias interpretaciones de la definición de campos de bits: 1) Un campo de bits debe almacenarse en el mismo byte y no puede abarcar dos bytes. Si no hay suficiente espacio en un byte para almacenar otro campo de bits, el campo de bits debe almacenarse comenzando en la siguiente ubicación. También es posible hacer que un dominio comience intencionalmente en la siguiente celda. Por ejemplo: struct bs { unsigned A: 4 unsigned: 0/* airspace */ unsigned B: 4/* store from next unit */ unsigned c: 4} En esta definición de campo de bits, A ocupa los primeros 4 bits del byte, el Los últimos 4 bits se rellenan con 0 para indicar que no se utilizan, B ocupa 4 bits a partir del segundo byte y C ocupa 4 bits. 2) Dado que no se permite que el campo de bits abarque dos bytes, la longitud del campo de bits no puede ser mayor que un byte, es decir, no puede exceder los 8 bits binarios. 3) Un campo de bits no puede tener un nombre de dominio de bits, en cuyo caso sólo se utiliza para relleno o ajuste de posición. No se pueden utilizar campos de bits sin nombre. Por ejemplo: struct k {int a: 1 int: 2 /*Estos dos bits no se pueden usar*/int b: 3 int c: 2} Del análisis anterior, podemos ver que el campo de bits es esencialmente un tipo de estructura; , pero los miembros de se asignan mediante binario. 2. Uso de campos de bits El uso de campos de bits es el mismo que el uso de miembros de estructura. Su forma general es: nombre de variable de campo de bits El nombre del campo de bits permite la salida en varios formatos. ejemplo 12.6 principal(){ estructura bs { sin firmar a: 1; sin firmar b: 3; sin firmar c: 4; printf( "d , d, d\n ", bit.a, bit.b, bit . c); pbit = amp bit; pbit- gt; a = 0; pbit- gt; b amp=3; pbit- gt; c | = 1; printf("d, d, d\n ", pbit- gt; 1, pbit- gt; b, pbit- gt; c } El programa de ejemplo anterior define la estructura del campo de bits bs, tres Los campos de bits son a, b, c, b, c respectivamente, que explican la variable bit de tipo bs y la variable puntero pbit que apunta al tipo bs. Esto significa que los punteros también se pueden utilizar con campos de bits. Las líneas 9, 10 y 11 del programa asignan valores a tres campos de bits respectivamente (cabe señalar que la asignación no puede exceder el rango permitido de este campo de bits). La línea 12 del programa genera el contenido de los tres campos en formato de número entero. La línea 13 envía la dirección de la variable de campo de bits a la variable de puntero pbit. En la línea 14, el puntero reasigna el campo de bits A a 0.

La línea 15 usa el operador de bit compuesto ";=", que es equivalente a: pbit- gt; = pbit- gt amp El valor inicial en el campo B de 3 bits es 7 y el resultado de la operación AND bit a bit; con 3 es 3 (111; 011 = 011, valor decimal 3). De manera similar, el programa utiliza el operador de bit compuesto "|=" en la línea 16, que equivale a: pbit->;c = pbit-gt;C|1 El resultado es 15. La línea 17 del programa genera los valores de estos tres campos a través de punteros.