Operadores de Bit Shift
Os operadores de deslocamento deslocar seu primeiro operando à esquerda (<<) ou para a direita (>>) pelo número de posições Especifica o segundo operando.
Sintaxe
SHIFT-expressão:
expressão de aditivoSHIFT-expressão<<shift aditivo-expression-expressão>>aditivo-expression.
Ambos os operandos devem ser valores de integrais.Esses operadores realizam conversões aritméticas usuais; o tipo do resultado é o tipo de operando esquerdo após a conversão.
Para a esquerda turnos, os bits de direito tornadas vagas são definidos como 0.Para a direita turnos, os bits de esquerda tornadas vagas são preenchidos com o tipo do primeiro operando após a conversão.Se o tipo for unsigned, eles são definidos como 0.Caso contrário, eles são preenchidos com cópias do bit de sinal.Para os operadores de shift esquerda sem área de excedentes, a instrução
expr1 << expr2
é equivalente à multiplicação por 2expr2.Para os operadores de shift direita
expr1 >> expr2
é equivalente a divisão por 2expr2 se expr1 não está assinado ou tem um valor não-negativo.
O resultado de uma operação de shift é indefinido se o segundo operando for negativo, ou se o operando da direita é maior ou igual à largura em bits de operando esquerdo promovido.
Desde que as conversões realizadas pela mudança operadores não fornecem para estouro ou condições de estouro negativo, as informações podem ser perdidas se o resultado de uma operação de shift não pode ser representado no tipo do primeiro operando após a conversão.
unsigned int x, y, z;
x = 0x00AA;
y = 0x5500;
z = ( x << 8 ) + ( y >> 8 );
Neste exemplo, x é deslocado deixado oito posições e y é posições direita oito deslocadas.Os valores deslocados são adicionados, dando a 0xAA55 e atribuído ao z.
Deslocar um valor negativo para a direita produz a metade do valor original, arredondada para baixo.Por exemplo, –253 (11111111 00000011 binário) deslocados, um bit de direita produz –127 (11111111 10000001 binário).Um positivo 253 turnos direito para produzir +126.
Direito turnos preservam o bit de sinal.Quando um inteiro assinado é deslocado para a direita, o bit mais significativo permanece definido.Quando um inteiro sem sinal é deslocado para a direita, o bit mais significativo está desmarcado.