logo
volkov / C++ / Бьерн Страуструп-Справочное руководство по С++

R.5.8 Операции сдвига

Операции сдвигов << и >> выполняются слева направо.

сдвиговое-выражение:

аддитивное-выражение

сдвиговое-выражение << аддитивное выражение

сдвиговое-выражение >> аддитивное выражение

Операнды должны быть целочисленного типа, и над ними производятся

стандартные целочисленные преобразования. Тип результата совпадает

с типом преобразованного левого операнда. Результат не определен,

если правый операнд отрицателен или больше или равен числу разрядов

в двоичном представлении преобразованного левого операнда.

Значением выражения E1<<E2 будет E1 (рассматриваемое как набор

разрядов), сдвинутое влево на E2 разрядов, причем освободившиеся

разряды заполняются нулями. Значением выражения E1>>E2 будет E1,

сдвинутое вправо на E2 разрядов. Если E1 беззнакового типа или

имеет неотрицательное значение, гарантируется, что сдвиг вправо

- логический (заполнение нулями), иначе результат зависит от реализации.