Операторы миграции. >> и <<
expression << expression
expression >> expression
Заметки
Операторы побитового сдвига выглядят следующим образом:
Сдвиг вправо (>>)
Сдвиг влево (<<)
Оба операнда оператора сдвига должен быть целочисленных типов.Целых повышениях, выполняются согласно правилам, описанным в Объединенные promotion.Тип результата совпадает с типом распространяемого левый операнд.Значение сдвига вправо выражение x >> y — x / 2yи значение сдвига влево выражение x << y is x * 2y.
Результат не определено, если правый операнд выражения shift является отрицательным или правый операнд больше или равно числу битов (распространяемого) левого операнда.Операция сдвига не выполняется, если правый операнд равен нулю (0).
Разряд вызывает оператор сдвига влево в первом операнде смещены влево на количество битов, указанное во втором операнде.Освобожденные операция сдвига битов заполняются нулями.Это является логическим сдвигом вместо shift и поверните операции.
Оператор сдвига вправо приводит разряд в первом операнде сдвигаются вправо на количество битов, указанное во втором операнде.Освобожденные операция сдвига битов заполняются нулями для неподписанных количеств.Для подписанных количества бит знака распространяется в освобожденных старших разрядов.Shift является логическим сдвигом, если левый операнд является неподписанные количество; в противном случае это арифметического сдвига.
Только для систем Microsoft
Результат сдвига вправо со знаком минус количество зависит от реализации.Хотя MicrosoftC++ распространяет наиболее существенные бит для заполнения освобожденных старших разрядов, нет никакой гарантии, что в других реализациях также сделать это.
Пример
// expre_Shift_Operators.cpp
// compile with: /EHsc
// Demonstrate shift operators
#include <iostream>
using namespace std;
int main() {
cout << "5 times 2 is " << (5 << 1) << endl
<< "20 divided by 4 is " << (20 >> 2) << endl;
}
Output
См. также
Ссылки
Выражения с бинарными операторами
Operator precedence and Associativity