Побитовое смещение

Всем, привет.Подскажите, почему при выполнение такого кода:
Console.WriteLine(8 << 31);Console.WriteLine(8 << 32);Console.WriteLine(8 << 33);
Получается следующий результат:0816
8 ответов

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


--cut-- 


--cut-- 


Сдвиг циклический. Когда бит выпадает с одной стороны, он дописывается с другой.
почему тогда выводит от 0 сразу 8, где 2 и 4.
Console.WriteLine(8 << 30); // 0Console.WriteLine(8 << 31); // 0


Idsa, ну переработал, бывает  Soah правильно ответил.Шустрые вы...


А почему же тогда код:
Console.WriteLine(8 << 31);
Дает в результате:0Добавлено через 5 минут и 24 секундыВсе разобрался:
Если тип первого операнда — int или **** (32-разрядное число), начало сдвига задается пятью младшими разрядами второго операнда.Если тип первого операнда — long или ulong (64-разрядное число), начало сдвига задается шестью младшими разрядами второго операнда.
Всем спасибо


00000000000000000000000000000100если сдвинуть единицу влево 31 раз, какое число получится  


  PashaPashIdsa        Жжоте