Código de Exemplo
Bits que são operados através do OU OEXCLUSIVO com 0 não são mudados, então se meuByte é uma variável byte:
meuByte ^ B00000000 = meuByte;
Bits que são operados através do OU EXCLUSIVO com 1 são invertidos, então:
meuByte ^ B11111111 = ~meuByte;
Notas e Advertências
Porque estamos lidando com bits em um operador bitwise, é conveniente usar o modificador binário com constantes na representação. Os números ainda são os mesmos em outras representações, só não são tão fáceis de entender. Também, B00000000 é mostrado para claridade, mas zero em qualquer outro formato é zero.
Consequentemente, para inverter os bits 0 e 1 de um variável ao mesmo tempo, deixando o resto da variável intocado, use o operador de atribuição por bitwise OU EXCLUSIVO (^=) com a constante B00000011
1 0 1 0 1 0 1 0 variável
0 0 0 0 0 0 1 1 máscara
----------------------
1 0 1 0 1 0 0 1
bits intactos
bits invertidos
Abaixo a mesma representação com os bits da variável substituidos pelo símbolo x. ~x representa o complemento de x.
x x x x x x x x variável
0 0 0 0 0 0 1 1 máscara
----------------------
x x x x x x ~x ~x
bits intactos
bits invertidos
myByte = B10101010;
myByte ^= B00000011 == B10101001;