Операции сдвига, отношения и поразрядные в С++
Применяют к целочисленным операндам.
Сдвигают двоичное представление первого операнда влево или вправо на количество двоичных разрядов, заданное вторым операндом. При сдвиге влево << освободившиеся разряды обнуляются. При сдвиге вправо >> освободившиеся биты заполняются нулями, если первый операнд без знакового типа, и знаковым разрядом в противном случае.
Операции сдвига не учитывают переполнение и потерю значимости.
Операции отношения: <, <=, >, >=, =, !=
Сравнивают первый операнд со вторым.
Операнды могут быть арифметического типа или указателями.
Результат - значение true или false (любое значение, не равное нулю, интерпретируется как true).
Операции сравнения на равенство и неравенство имеют меньший приоритет, чем остальные операции сравнения.
Поразрядные операции &, |, ^
Применяются к целочисленным операндам, работают с их двоичными представлениями.
Операнды сопоставляются побитово (первый бит первого операнда с первым битом второго, второй со вторым битом, и т д.).
Поразрядная конъюнкция & (И): бит результата равен 1 тогда, когда соответствующие биты обоих операндов равны 1.
Поразрядная дизъюнкция | (ИЛИ): бит результата равен - 1, если соответствующий бит хотя бы одного из операндов равен 1.
Поразрядное исключающее ^ (ИЛИ): бит результата равен 1, если соответствующий бит только одного из операндов равен 1.
Пример. Поразрядные операции.
#includeРезультат работы:int main(){ cout << "\n 6 & 5 = " << (6 & 5); cout << "\n 6 | 5 = " << (6 | 5); cout << "\n 6 ^ 5 = " << (6 ^ 5); return 0; }
6 & 5 = 4 6 | 5 = 7 6 ^ 5 = 3