Udostępnij za pośrednictwem


<< — Operator (odwołanie w C#)

Operator lewy shift (<<) przesunięcia jego pierwszy operand po lewej przez liczbę bitów określonych przez jego drugi operand.Typ drugi operand musi być int lub typ, który ma wstępnie niejawna konwersja numeryczne do int.

Uwagi

Jeśli pierwszy argument jest int lub uint (ilość 32-bitowe), shift count podane przez pięć bitów mniej znaczącym drugi operand.Oznacza to, że liczba rzeczywista shift jest bitów 0 do 31.

Jeśli pierwszy argument jest long lub ulong (ilość 64-bitowe), shift count podane przez sześć bitów mniej znaczącym drugi operand.Oznacza to, że liczba rzeczywista shift jest bity 0-63.

Znaczących bitów, które są nie w zakresie typu pierwszego operandu po shift zostaną odrzucone, a puste mniej znaczące bity są wypełnione przez zero.Operacje SHIFT nigdy nie powodują przepełnienia.

Typy zdefiniowane przez użytkownika mogą przeciążać << operatora (zobacz operator); Typ pierwszy operand musi być typ zdefiniowany przez użytkownika i typ drugi operand musi być int.Podczas jest przeciążony operator binarny, odpowiedni operator przypisania, jeśli takie są, jest również niejawnie przeciążone.

Przykład

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
*/

Komentarze

Należy zauważyć, że i<<1 i i<<33 dają ten sam wynik, ponieważ 1 i 33 mają ten sam niskiego znaczących bitów pięć.

Zobacz też

Informacje

Operatory C#

Koncepcje

Przewodnik programowania w języku C#

Inne zasoby

Odwołanie w C#