Easybit-ops

Перечислите основные битовые операторы в C++.

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

Шесть битовых операторов: `&` (AND), `|` (OR), `^` (XOR), `~` (NOT), `<<` (сдвиг влево), `>>` (сдвиг вправо). Составные: &=, |=, ^=, <<=, >>=.

unsigned flags = 0b1100;
flags |= 0b0001;     // set bit 0 → 0b1101
flags &= ~0b0100u;   // clear bit 2 → 0b1001
bool on = flags & 0b1000;  // test bit 3 → true
flags ^= 0b1000;    // toggle bit 3

// ВНИМАНИЕ: приоритет & ниже ==, поэтому всегда скобки
if ((flags & 0xFF) == 0) { /* ... */ }

В C++20 в <bit> добавили std::popcount, std::countl_zero, std::has_single_bit, std::bit_ceil. Для битовых операций используйте unsigned, чтобы избежать UB и implementation-defined поведения со знаковым сдвигом.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.