Битовые операции
На эту неделю у нас практика к теории «Побитовые операции».
Это следующий важный шаг после знакомства с двоичной записью чисел. Если в теме про представление чисел в битах мы учимся понимать, как число устроено, то здесь уже начинаем активно работать с отдельными битами: проверять их, менять, сравнивать числа по битовым свойствам и использовать побитовые операции как полноценный инструмент решения задач.
Теория:
- 10.2 Побитовые операции — https://olprog.ru/articles/olprog/bit-manipulation/operations/
Практика к теме:
- Таинственный жетон — https://judje.olprog.ru/problem/lonelytoken
- Переключатели на панели — https://judje.olprog.ru/problem/panelbitflips
- Неоновые панели — https://judje.olprog.ru/problem/neonpanels
- Ночной сигнал — https://judje.olprog.ru/problem/nightsignal
- Удерживая баланс — https://judje.olprog.ru/problem/bitwisebalance
Эта подборка подойдёт тем, кто хочет не просто запомнить, как работают AND, OR, XOR и сдвиги, а научиться узнавать ситуации, где такие операции действительно упрощают решение.
Во время решения особенно полезно обращать внимание на такие вопросы:
- какой именно бит или группа битов влияет на ответ;
- что удобнее сделать: проверить бит, включить его, выключить или инвертировать;
- можно ли заменить более громоздкую логику короткой побитовой операцией;
- есть ли в задаче инвариант, чётность или свойство, которое естественно выражается через
XOR.
Рекомендуем идти так: сначала внимательно прочитать теорию, затем попробовать решить задачи по порядку — от более прямых к тем, где побитовые операции уже встроены в общую идею решения. На этой теме особенно важно не просто получить ответ, а понимать, почему конкретная операция работает именно так.
Если задача не поддаётся сразу, полезно выписать несколько маленьких примеров вручную в двоичной записи. Очень часто после этого становится ясно, какие биты нужно сравнивать, как устроен переход и почему решение получается компактным.
Удачи в решении!
Ждём ваши результаты, вопросы и впечатления от задач.
Комментарии