2.5 Побитовые операции

2.5.4 Упаковать настройки

Условие

Настройки устройства хранятся в младших 16 битах беззнакового числа settings. Биты 0–2 включительно содержат режим, биты 3–7 включительно — мощность. Биты 8–15 содержат другие настройки, которые необходимо сохранить без изменений. Биты нумеруются с нуля от младшего к старшему.

Даны исходное число и новые значения режима и мощности. Замените оба поля, сохранив остальные биты. Затем извлеките режим и мощность из полученного числа. Используйте тип unsigned int, побитовые маски и сдвиги; перевод числа в строку двоичных цифр не допускается.

Реализуйте две функции: unsigned int update_settings(unsigned int settings, unsigned int mode, unsigned int power) — возвращает число с обновлёнными полями; void unpack_settings(unsigned int settings, unsigned int *mode, unsigned int *power) — записывает извлечённые значения через указатели на существующие переменные. Функции не должны выполнять ввод или вывод. В main сначала вызовите update_settings, затем передайте её результат в unpack_settings и выведите результаты.

Ограничения

Время: 2 секунды. Память: 64 МиБ. Вывод: до 2 МиБ. Стандарты: C11 / C++17.

Входные данные

Три числа в одной строке: settings, mode, power. Ограничения: 0 ≤ settings ≤ 65535, 0 ≤ mode ≤ 7, 0 ≤ power ≤ 31.

Выходные данные

Три беззнаковых целых числа в одной строке через пробел: обновлённое число настроек, режим и мощность, извлечённые из этого числа. Все числа выводятся в десятичной записи.

Примеры

Вход 1
0 3 10
Ожидаемый выход
83 3 10
Вход 2
65535 0 0
Ожидаемый выход
65280 0 0
Вход 3
256 7 31
Ожидаемый выход
511 7 31

Пробный запуск

Код берётся из редактора. Запуск не создаёт посылку и не влияет на баллы.

Выберите пример или введите свои данные и нажмите «Запустить».

Текущая попытка

Отправьте решение. Этапы и результат появятся здесь автоматически.

Все попытки

Войдите, чтобы видеть свои попытки.

Редактор

Один файл до 64 КиБ · Tab / Shift+Tab — отступ · Esc — выход из редактора · черновик сохраняется для этого аккаунта, задачи и языка.