Оператор << (Справочник по 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#