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 подскажет развёрнутый ответ в реальном времени.