Nesta aula vamos aprender como funciona o operador OU EXCLUSIVO ( ^ ) bit a bit na linguagem de programação C. Com esta operação é possível inverter o estado de um determinado bit, ligando se estiver desligado ou desligando se estiver ligado.
A operação bit a bit ^ (ou exclusivo) possui a seguinte tabela verdade.
A | B | A ^ B |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
A operação é realizada sobre cada bit e o resultado será 0 sempre que os dois bits da operação forem iguais e 1 quando forem diferentes.
Esta operação é útil quando precisamos inverter o estado de um bit. Seja a seguinte sequência de bits: xxxx.xx1x. Para inverter apenas o bit 1, ou seja, mudá-lo para zero, precisamos da máscara 0000.0010 e a operação ou exclusivo entre os dois, assim:
xxxx.xx1x
^ 0000.0010
————-
xxxx.xx0x
As posições em zero serão mantidas em zero pois serão iguais. As posições em 1 serão mantidas em 1 pois serão diferentes. O bit será desligado pois serão iguais.
Programa de teste:
/* Operação ou exclusivo entre a e b */ int main(){ int a, b; a = 73; // 01001001 (73 em binário) b = a ^ (1 << 3); // 00001000 ( 1 << 3 ), para inverter o bit-3 = 65 printf("a: %d\tb: %d\n", a, b); b = b ^ (1 << 3); // 00010000 ( 1 << 3 ), para inverter o bit-3 = 73 printf("a: %d\tb: %d\n", a, b); return 0; }