1.1 KiB
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 — четыре маски.