^=

Descrição

O operador de atribuição composta bitwise OU EXCLUSIVO ^= é frequentemente usado com uma variável e uma constante para "inverter" (ou trocar) bits particulares de uma variável.

Uma revisão do operador bitwise OU EXCLUSIVO ^:

0 0 1 1 operando1 0 1 0 1 operando2 ---------- 0 1 1 0 (operando1 ^ operando2) - resultado retornado

Sintaxe

x ^= y; // equivalente a x = x ^ y;

Parâmetros

  • x: variável. Tipos de dados permitidos: char, int, long
  • y: variável ou constante. Tipos de dados permitidos: char, int, long

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

Então:

myByte = B10101010; myByte ^= B00000011 == B10101001;
Please note: These are affiliate links. If you buy the components through these links, We may get a commission at no extra cost to you. We appreciate it.