Compartilhar via


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 aditivo

    SHIFT-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.

Consulte também

Referência

SHIFT operadores: >> e <<