Red de conocimiento informático - Material del sitio web - Cómo operar o asignar valores a los bits de variables en el lenguaje C del microcontrolador.

Cómo operar o asignar valores a los bits de variables en el lenguaje C del microcontrolador.

En el lenguaje C, generalmente hay dos formas de operar bits, una es usar los operadores de operación de bits proporcionados por el lenguaje C y la otra es usar campos de bits.

1. Usar campos de bits

El formato general para definir campos de bits en lenguaje C es el siguiente: ¿estructura?

{?Lista de campos de bits?

Nombre de estructura de campo de bits: Es un identificador en lenguaje C compuesto por letras, números o guiones bajos. El primer carácter debe ser una letra o un guión bajo.

Lista de campos de bits: El formato de la lista de campos de bits es: tipo descriptor nombre del campo de bits: ¿longitud del campo de bits?

El siguiente código de ejemplo calcula las especificaciones máxima, mínima y más débil de números de precisión simple en codificación de punto flotante IEEE754 en términos de campos de bits. #include?lt;stdio.hgt;

typedef?struct?FP_SINGLE

{ unsigned?__int32?exp?:?8; unsigned?__int32?sign?:?1;

}?fp_single;

int?main()

{

float?x;

fp_single? *?(fp_single?*)amp;x;

fp_s-gt;sign?=?0;

fp_s-gt;exp?=?0xfe;

fp_s-gt; fracción?=?0x7fffff;

printf?("float?Número máximo: ? le\n", (doble)x);

fp_s-gt ;signo?=?0;

fp_s-gt;exp?=?0x1;

fp_s-gt;fracción?=?0x0;

printf? ("¿flotante? Número mínimo: ?le/n", (doble)x

fp_s-gt; signo?=?0; ?0;

fp_s-gt;fracción?=?0x1;

printf?("flotante?número mínimo de norma débil: le \n/n", (doble)x) ;

¿regresar?;

}

2. Utilice operadores bit a bit Los operadores bit a bit en lenguaje C tienen un sentido común básico, es decir, solo pueden operar. en números enteros no se pueden realizar operaciones en números de punto flotante, porque los números de punto flotante están codificados usando IEEE754 y no tiene sentido usar operadores bit a bit. Lista de operadores de bits proporcionados por el lenguaje C:

amp; y ? Si los dos bits binarios correspondientes son 1, el valor del resultado del bit es 1; de lo contrario, es 0

|?Bit a bit o?Si uno de los dos bits binarios correspondientes es 1, el valor resultante del bit es 1

^?Bit a bit o?Si los valores de los dos bits binarios involucrados en el las operaciones son las mismas, entonces es 0, de lo contrario es 1

~ ¿Negación? ~ es un operador unario, que se usa para invertir bit a bit un número binario, es decir, cambiar 0 a 1, cambiar 1 a 0

lt;lt;? Desplazar N bits a la izquierda y 0 bits a la derecha

gt;gt;?¿Desplazar a la derecha? Mueva cada bit binario del número hacia la derecha N bits. Los bits bajos en el extremo derecho del desplazamiento se descartarán. Si es un número sin signo, los bits altos se rellenarán con ceros. .