Оператор << (Справочник по C#)

Обновлен: Ноябрь 2007

Оператор сдвига влево (<<) сдвигает первый операнд влево в соответствии с количеством бит, заданным вторым операндом. Второй операнд должен иметь тип int.

Заметки

Если тип первого операнда — int или uint (32-разрядное число), начало сдвига задается пятью младшими разрядами второго операнда.

Если тип первого операнда — long или ulong (64-разрядное число), начало сдвига задается шестью младшими разрядами второго операнда.

Старшие разряды первого операнда отклоняются, а пустые младшие разряды заполняются нулями. Операторы сдвига никогда не вызывают переполнений.

Определенные пользователем типы могут вызвать перегрузку оператора << (см.оператор); тип первого операнда должен быть определен пользователем, а тип второго должен быть int. Если бинарный оператор перегружен, соответствующий оператор присваивания (если таковой имеется), также будет явно перегружен.

Пример

class MainClass11
{
    static void Main()
    {
        int i = 1;
        long lg = 1;
        Console.WriteLine("0x{0:x}", i << 1);
        Console.WriteLine("0x{0:x}", i << 33);
        Console.WriteLine("0x{0:x}", lg << 33);
    }
}
/*
Output:
0x2
0x2
0x200000000
*/

Комментарии

Обратите внимание, что i<<1 и i<<33 дают одинаковый результат, поскольку 1 и 33 имеют те же пять младших разрядов.

См. также

Основные понятия

Руководство по программированию в C#

Ссылки

Операторы C#

Другие ресурсы

Справочник по C#