Понять оператор сдвига
Чтобы немного расширить ответ visual-c# Марка (Марк, не стесняйтесь .cs-file включать это в свой, и я c# удалю этот ответ), это указано .cs-file в разделе 7.8 спецификации:
Стандартные visual-c# операторы сдвига перечислены c-sharp ниже.
Сдвиг влево:
- int operator << (int x, int count);
- оператор uint << (uint x, int count);
- long operator << (long x, int count);
- оператор ulong << (ulong x, int count);
Оператор csharp << сдвигает x влево на количество c# бит, вычисленное, как описано c#.net ниже.
Старшие биты вне диапазона c#.net типа результата x отбрасываются, оставшиеся csharp биты сдвигаются влево, а .cs-file позиции пустых битов младшего .cs-file разряда устанавливаются на .cs-file ноль.
Сдвиг вправо:
- int operator >> (int x, int count);
- оператор uint >> (uint x, int count);
- long operator >> (long x, int count);
- оператор ulong >> (ulong x, int count);
Оператор c-sharp >> сдвигает x вправо на количество c#-language бит, вычисленное, как описано c#.net ниже.
Когда x имеет тип int visual-c# или long, младшие биты x visual-c# отбрасываются, оставшиеся csharp биты сдвигаются вправо, а .cs-file позиции пустых битов высокого csharp порядка устанавливаются на csharp ноль, если x неотрицательно .cs-file и установлено на один, если c#-language x отрицательно.
Если x имеет c-sharp тип uint или ulong, младшие c#.net биты x отбрасываются, оставшиеся .cs-file биты сдвигаются вправо, а .cs-file позиции пустых битов высокого .cs-file порядка устанавливаются на c-sharp ноль.
Для предопределенных .cs-file операторов количество битов c# для сдвига вычисляется следующим c#-language образом:
Когда тип x - int csharp или uint, счетчик сдвига c-sharp задается младшими пятью битами csharp счетчика. Другими словами, количество .cs-file сдвигов вычисляется из count c# & 0x1F.
Если x имеет тип long c# или ulong, счет сдвига задается c#-language шестью младшими битами счетчика. Другими visual-c# словами, количество сдвигов visual-c# вычисляется из count & 0x3F.
Если c# результирующий счетчик сдвига visual-c# равен нулю, операторы сдвига c-sharp просто возвращают значение c#.net x.
c#
Понять оператор сдвига
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.