Перейти к содержимому
Задача · Операторы и выражения · урок 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 бита. Установка уже установленного бита и сброс уже сброшенного возвращают flags без изменений.

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