Операции выполняются над операндами (переменными и значениями) с использованием операторов. В C++ существует несколько типов операторов:

  1. Арифметические операторы:

    • Сложение (+), вычитание (-), умножение (*), деление (/), остаток от деления (%).
  2. Инкремент и декремент:

    • Инкремент (++), декремент (--).
    int a = 5;
    a++; // a становится 6
    a--; // a становится снова 5
  3. Логические операторы:

    • И (&&), ИЛИ (||), НЕ (!).
  4. Побитовые операторы:

    • И (&), ИЛИ (|), исключающее ИЛИ (^), побитовый сдвиг влево (<<), побитовый сдвиг вправо (>>). Побитовый сдвиг не затрагивает соседние ячейки памяти.
  5. Операторы сравнения:

    • Равно (==), не равно (!=), больше (>), меньше (<), больше или равно (>=), меньше или равно (<=).
  6. Операторы присваивания:

    • Присваивание (=), присваивание с операцией (+=, -=, *=, /=, %= и т.д.).
  7. Другие операторы:

    • Размер объекта (sizeof), приведение типов (static_cast, dynamic_cast, const_cast, reinterpret_cast).

Пример программы с побитовыми операциями

#include <iostream>
using namespace std;
 
int main() {
    unsigned int a = 0b10101010; // 170
    unsigned int b = 0b01010101; // 85
    
    // Побитовое И
    unsigned int result_and = a & b;
    cout << "a & b = " << result_and << endl; // 0b00000000 (0)
    
    // Побитовое ИЛИ
    unsigned int result_or = a | b;
    cout << "a | b = " << result_or << endl; // 0b11111111 (255)
    
    // Побитовое исключающее ИЛИ (XOR)
    unsigned int result_xor = a ^ b;
    cout << "a ^ b = " << result_xor << endl; // 0b11111111 (255)
    
    // Побитовое НЕ
    unsigned int result_not = ~a;
    cout << "~a = " << result_not << endl; // 0b01010101 (в дополнении до 2-х: 85, если рассматривать как беззнаковое)
    
    // Побитовый сдвиг влево
    unsigned int result_shl = a << 1;
    cout << "a << 1 = " << result_shl << endl; // 0b01010100 (340)
    
    // Побитовый сдвиг вправо
    unsigned int result_shr = a >> 1;
    cout << "a >> 1 = " << result_shr << endl; // 0b01010101 (85)
    
    return 0;
}