Compartilhar via


Operador << (Referência de C#)

O operador shift esquerda (<<) turnos seu primeiro operando esquerdo pelo número de bits especificado pelo seu segundo operando. O tipo do segundo deve ser um int ou um tipo que tem uma conversão numérica de implícita predefinida para int.

Comentários

Se o primeiro operando for um int ou uint (quantidade de 32 bits), a contagem shift é dado pelos bits de ordem baixa cinco do segundo. Ou seja, a contagem real shift é bits de 0 a 31.

Se o primeiro operando for um longo ou ulong (quantidade de 64 bits), a contagem shift é dado pelos seis bits de ordem inferior do segundo. Ou seja, a contagem real shift é bits de 0 a 63.

Qualquer bits de ordem superior que não são dentro do intervalo do tipo do primeiro operando após a mudança são descartados e os bits de ordem inferior vazios são preenchidas com zero. SHIFT operações nunca causam estouros.

Tipos definidos pelo usuário podem sobrecarregar o << operador (consulte operador); o tipo do primeiro operando deve ser o tipo definido pelo usuário e o tipo do segundo deve ser int. Se houver, quando um operador binário está sobrecarregado, o operador de atribuição correspondente, também será implicitamente sobrecarregado.

Exemplo

class MainClass11
{
    static void Main()
    {
        int i = 1;
        long lg = 1;
        // Shift i one bit to the left. The result is 2.
        Console.WriteLine("0x{0:x}", i << 1);
        // In binary, 33 is 100001. Because the value of the five low-order 
        // bits is 1, the result of the shift is again 2. 
        Console.WriteLine("0x{0:x}", i << 33);
        // Because the type of lg is long, the shift is the value of the six 
        // low-order bits. In this example, the shift is 33, and the value of 
        // lg is shifted 33 bits to the left. 
        //     In binary:     10 0000 0000 0000 0000 0000 0000 0000 0000  
        //     In hexadecimal: 2    0    0    0    0    0    0    0    0
        Console.WriteLine("0x{0:x}", lg << 33);
    }
}
/*
Output:
0x2
0x2
0x200000000
*/

Comentários

Observe que i<<1 e i<<33 dar o mesmo resultado, como 1 e 33 têm os mesmos cinco bits de ordem inferior.

Consulte também

Referência

Operadores em C#

Conceitos

Guia de Programação em C#

Outros recursos

Referência de C#