Задача · Операторы и выражения · урок 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)→9uclear_flag(9u, 0)→8uhas_flag(2147483648u, 31)→true
Ограничения: bit — от 0 до 31, а unsigned занимает 32 бита. Установка уже установленного бита и сброс уже сброшенного возвращают flags без изменений.