#pragma once #include #include /** * Реализовать чтение, установку, сброс и переключение бита беззнакового * 32-битного числа. Биты нумеруются от младшего, начиная с нуля. Каждую из * следующих четырёх задач следует решить не используя циклы и условные * операторы. Одна функция может содержать не более двух операций. Допустимые * операции: <<, >>, &, |, ^, ~ */ bool get_bit(std::uint32_t value, unsigned int position); std::uint32_t set_bit(std::uint32_t value, unsigned int position); std::uint32_t clear_bit(std::uint32_t value, unsigned int position); std::uint32_t toggle_bit(std::uint32_t value, unsigned int position); /** * Упаковать компоненты красного, зелёного, синего и альфа-канала в число * формата 0xRRGGBBAA, затем выполнить обратное извлечение компонентов. */ std::uint32_t pack_rgba(std::uint8_t red, std::uint8_t green, std::uint8_t blue, std::uint8_t alpha); void unpack_rgba(std::uint32_t color, std::uint8_t& red, std::uint8_t& green, std::uint8_t& blue, std::uint8_t& alpha); /** * Выполнить ?? бросков двух честных шестигранных кубиков и оценить вероятность * того, что сумма не меньше 10. Вернуть отношение числа успешных испытаний к * общему числу испытаний. */ double estimate_large_sum(std::mt19937& generator, int experiments);