0Pricing
Competitive Programming Academy · Урок

Установить, сбросить и переключить бит

Изменяйте отдельный бит с помощью масок

«Установить, сбросить и переключить бит» — бесплатный урок Competitive Programming Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Competitive Programming Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Competitive Programming Academy содержит 4 уроков всего.

Изменяйте по одному биту за раз

Иногда требуется изменить один бит, не затрагивая остальные. Хитрость заключается в создании маски, которая выбирает именно нужный бит. 🎯

Создайте маску одного бита

Сдвиньте 1 в нужную позицию — и получите маску с одним включённым битом. Позиция 0 — это крайний правый бит.

mask = 1 << 3  # 0b1000, targets bit 3

Установите бит с помощью OR

Чтобы включить бит, примените OR к числу и маске. OR принудительно устанавливает этот бит в 1 и оставляет все остальные биты без изменений. Это называется установкой бита.

n = 0b0001
n |= (1 << 2)  # 0b0101

Установка идемпотентна

Если бит уже равен 1, повторная установка ничего не меняет. Операцию OR с маской безопасно повторять, поэтому она надёжна внутри циклов. 👍

Инвертированная маска

Чтобы сбросить бит, нужна маска, в которой соответствующая позиция выключена, а все остальные включены. Оператор NOT (~) инвертирует каждый бит простой маски.

clear = ~(1 << 2)  # ...11111011

Сброс бита с помощью AND

Выполните AND числа с инвертированной маской, чтобы принудительно установить этот бит в 0 и сохранить остальные. Так выполняется сброс одного бита.

n = 0b0111
n &= ~(1 << 1)  # 0b0101

Переключение бита с помощью XOR

Операция XOR с однобитовой маской инвертирует соответствующую позицию: 0 превращается в 1, а 1 — в 0. Такое переключение — самый лаконичный однострочный вариант из трёх.

n = 0b0101
n ^= (1 << 0)  # 0b0100

Проверка, включён ли бит

Выполните AND числа с однобитовой маской. Если результат не равен нулю, этот бит установлен; если результат равен нулю, бит выключен.

n = 0b0100
on = (n & (1 << 2)) != 0  # True

Чтение бита как 0 или 1

Сдвиньте число вправо, чтобы переместить нужный бит в младшую позицию, а затем выполните AND с 1. В результате вы получите ровно значение бита — 0 или 1.

n = 0b1010
bit = (n >> 1) & 1  # 1

Зачем нужны операции с битами

Установка, сброс и переключение позволяют хранить множество включённых и выключенных флагов внутри одного целого числа. На этом основано компактное состояние с битовой маской в задачах соревнований.

Не перепутайте смещение на единицу

Нумерация битов начинается с 0, поэтому бит k находится в значении, равном 1 со сдвигом влево на k позиций. Ошибка в индексе — самая распространённая проблема у начинающих при работе с битами.

Быстрая проверка

Выберите правильную операцию для сброса бита.

Повторение: установить, сбросить, переключить

OR устанавливает бит, AND с NOT сбрасывает его, а XOR переключает один бит. Освойте эти три маски — и сможете управлять любым нужным битом. 🎉

Часто задаваемые вопросы

Урок «Установить, сбросить и переключить бит» бесплатный?

Да — полный текст урока «Установить, сбросить и переключить бит» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Competitive Programming Academy, подпишись на CoddyKit PRO. Курс Competitive Programming Academy содержит 4 уроков всего.

Чему я научусь в уроке «Установить, сбросить и переключить бит»?

Изменяйте отдельный бит с помощью масок Ты практикуешь Competitive Programming Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Competitive Programming Academy?

Предыдущий опыт не требуется. Competitive Programming Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Установить, сбросить и переключить бит»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Competitive Programming Academy?

Да. Каждый урок Competitive Programming Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. AND, OR, XOR и сдвиги
  2. Установить, сбросить и переключить бит
  3. Подсчёт битов и младший установленный бит
  4. Битовые маски как маленькие множества
← Назад к Competitive Programming Academy