4.4: Operaciones bit a bit
- Page ID
- 82486
A veces te gustaría realizar operaciones bit a bit en lugar de matemáticas ordinarias. Por ejemplo, ¿y si quieres lógicamente Y dos variables, poco a poco? Las operaciones bitwise son muy comunes cuando se programan microcontroladores como un medio para establecer, borrar y probar bits específicos en registros de control (por ejemplo, establecer un pin específico en un puerto digital para el modo de lectura en lugar del modo de escritura). C tiene una serie de operadores bit a bit. Ellos son:
& | Y |
| | O |
^ | XOR |
~ | El Complemento |
>> | Cambio a la derecha |
<< | Mayús a la izquierda |
Tenga en cuenta el doble uso de &
para “dirección de” y ahora AND. La operación unaria es siempre “dirección de”, y la operación binaria es siempre Y, por lo que a & b
no implicaría la dirección de b
. Si quisieras AND x
con y
, desplaza el resultado 2 lugares a la izquierda y asignas el resultado a z
, usarías:
z = (x&y)<<2;
Veamos algunos ejemplos. Supongamos que las variables X
, Y
y Z
son caracteres sin signo
. X
e Y
se establecen en 13 y 134, respectivamente. En hexadecimal, eso es 0x0d y 0x86 para patrones de bits de 00001101 y 10000110.
Z = X<<3; // Z is 01101000 or 0x68 Z = X>>1; // Z is 00000110 or 0x06 Z = ~X; // Z is 11110010 or 0xf2 Z = X|Y; // Z is 10001111 or 0x8f Z = X&Y; // Z is 00000100 or 0x04 Z = X^Y; // Z is 10001011 or 0x8b