Побитовые операции сдвига принимают два операнда: первый операнд это сдвигаемое количество, а второй специфицирует количество битовых позиций, на которое сдвигается первый операнд. Направление сдвига контролируется применяемой операцией.
Операции сдвига конвертируют свои операнды в 32-битные целые и возвращают результат того же типа, что и у левого операнда.
Операции сдвига перечислены в таблице.
<<
(Сдвиг влево)
Эта операция сдвигает первый операнд на специфицированное количество битов влево. Излишние биты, смещённые влево, отбрасываются. Справа биты заполняются нулями.
9<<2 даёт 36, поскольку 1001, смещённое на 2 бита влево, становится 100100, то есть 36.
>>
(Сдвиг вправо с сохранением знака)
Первый операнд сдвигается на специфицированное количество битов вправо. Излишние биты, смещённые вправо, отбрасываются. Копии самого левого бита вдвигаются слева.
9>>2 даёт 2, поскольку 1001, смещённое на 2 бита вправо, становится 10, то есть 2. Аналогично, -9>>2 даёт -3, поскольку знак сохраняется.
>>>
(Сдвиг вправо с заполнением нулями)
Первый операнд сдвигается на специфицированное количество битов вправо. Излишние биты, смещённые вправо, отбрасываются. Слева биты заполняются нулями.
19>>>2 даёт 4, поскольку 10011, смещённое на 2 бита вправо, становится 100, то есть 4. Для неотрицательных чисел, сдвиг вправо с заполнением нулями даёт тот же эффект, что и сдвиг вправо с сохранением знака.