Deslocamentos binários (C++)


Operações de bits

Todos os números na memória do computador são armazenados em formato binário, ou seja, como uma sequência de 0 e 1. Para armazenar números na memória do computador, um número finito de bits é usado. Devido a esse número, o computador tem um alcance limitado e os resultados dos cálculos podem ser imprecisos. Um número inteiro pode ser armazenado em 8, 16, 32 ou 64 bits de memória. Cada bit adicional expande o intervalo de valores possíveis em 2. 
As operações com números positivos e negativos são realizadas no processador usando os mesmos algoritmos.

Com a ajuda de operações lógicas bit a bit, você pode controlar bits individuais dos registradores do processador e dispositivos externos. 
 
Operação C++ Destino
a & b Bitwise E para a e b
a | b Bitwise OR para a e b
a ^ b OU para a e b
~a Inversão de bit para a
a << b Deslocamento bit a bit à esquerda de a para b
a >> b Deslocamento bit a bit à direita de a para b



Operação E
Usando a operação "AND" você pode redefinir (definir como zero) os bits para os quais a máscara é 0! 
 
Máscara – uma constante que define o escopo da operação lógica nos bits de um número de vários bits.

D - dados, M - máscara

 

Operação OU
A operação "OR" pode ser usada para escrever um 1 nos bits para os quais a máscara é 1!

 

Operação exclusiva OU
Usando a operação "XOR" você pode inverter bits para os quais a máscara é 1!


 

Deslocar para a esquerda
Um deslocamento lógico (bit a bit) à esquerda em 1 bit duplica um número inteiro positivo.

 

Deslocar para a direita
Booleano (bit a bit) .deslocar 1 para a direita  divide um inteiro positivo por 2.


Uma vez que um deslocamento à direita define o bit de sinal em posições vagas, o sinal de x pode ser determinado deslocando à direita todo o comprimento da variável.