Урок 5. Логический сдвиг влево/вправо

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

Пример использования логического сдвига влево (<<) числа 253 на 2 бита:

16

Если биты не терялись, то в результате получилось бы число 1012 (253 * 2 * 2), но поскольку длина числа ограничена, то произошло урезания и результатом стало число 244.

Пример использования логического сдвига вправо (>>) числа -127 на 2 бита:

17

Примечание: Если тип первого операнда – int или uint (32-разрядное число), начало сдвига задается пятью младшими разрядами второго операнда. Фактический сдвиг от 0 до 31 бит

Примечание: Если тип первого операнда – long или ulong (64-разрядное число), начало сдвига задается шестью младшими разрядами второго операнда. Фактический сдвиг от 0 до 63 бит.

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

Источник: видеоурок Александра Шевчука "ВИДЕОУРОК №5. ЛОГИЧЕСКИЕ ОПЕРАЦИИ".

%D1%81%D1%82%D1%80%D0%B5%D0%BB%D0%BA%D0%B0%20%D0%B2%D0%BB%D0%B5%D0%B2%D0%BE%202 предыдущая статья | следующая статья %D1%81%D1%82%D1%80%D0%B5%D0%BB%D0%BA%D0%B0%20%D0%B2%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%202