Files
eduplan-cpp-eltex/diag/tasks/01_bits/task.md
T

1.1 KiB

Задача 01 — битовые операции (C)

Реализуй в solution.cpp четыре функции. Запрещено пользоваться встроенными __builtin_popcount, std::popcount, std::byteswap — считается любая корректная ручная реализация.

int      popcount32(uint32_t x);        // число единичных бит
uint32_t reverse_bits32(uint32_t x);    // развернуть порядок всех 32 бит
bool     is_power_of_two(uint32_t x);   // x — степень двойки (0 не считается)
uint32_t bswap32(uint32_t x);           // поменять порядок байт местами

Проверка: python3 grade.py 01 из каталога diag/. Критерий: все проверки ok, сборка без предупреждений, ASAN/UBSAN чистые.

Подсказки по разбору после сдачи: x & (x - 1); реверс — классический цикл на 32 итерации или пара «маска+сдвиг»; bswap — четыре маски.