xor swap

Motivado pelo Log4Dev, quero contar sobre um truque legal: o xor swap (também conhecido por triple-xor trick).

O xor swap é um truque para trocar o conteúdo de 2 variáveis sem usar uma terceira. Em C, o jeito normal de trocar dois ints (x e y) é:

temp = x;
x = y;
y = temp;

Com o xor swap, o código fica:

x = x ^ y;
y = x ^ y;
x = x ^ y;

E aí pronto, suas variáveis estão invertidas. Pode acreditar (ou ler uma explicação bem mais detalhada). Legal né?

E qual a aplicação disso? Bem, um dia os microcontroladores tiveram quantidades bem escassas de memória, e jogar um int fora para variável temporária assim estava fora de cogitação. Hoje muitos microcontroladores tem uma RAM razoável e a perda de legibilidade e manutenibilidade acarretadas não vale mais a pena para estes controladores. Para os que vivem no cruel mundo dos 128 bytes de RAM, ainda vale a pena.

Publicado em C. Tags: . Leave a Comment »

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: