Перейти к содержимому
Задача · Операторы и выражения · урок 8 из 8

Задача: флаги в битах

Число flags хранит набор флагов: флаг номер bit включён, если бит номер bit равен 1. Напишите unsigned set_flag(unsigned flags, int bit) и unsigned clear_flag(unsigned flags, int bit): первая возвращает flags, где этот бит установлен в 1, вторая — где он сброшен в 0, а остальные биты прежние. Третья функция, bool has_flag(unsigned flags, int bit), возвращает true, если этот бит равен 1.

  • set_flag(1u, 3) → 9u
  • clear_flag(9u, 0) → 8u
  • has_flag(2147483648u, 31) → true

Ограничения: bit — от 0 до 31, а unsigned занимает 32 бита. Если бит уже установлен, set_flag возвращает flags без изменений; если он уже сброшен, так же поступает clear_flag.

Не добавляйте лишних #include, если в задаче это прямо не сказано.

flags.cpp — cpp
cpp · строк: 12
Ctrl+Enter запуск · Esc выйти из редактора

Подпишись, чтобы пройти курс

Курс бесплатный. Войди через Telegram и подпишись на канал — откроются все уроки.

Войти другим способом