Maybe it would be better to keep the `__buildin` calls in this function instead of converting them to #defines?
The generated code could be rather long if the compiler uses bit magic in order to speed up the evaluation.

Maybe someone could check the .text size using the `#define`s, and using
```c
signed number_of_lowest_bit(unsigned v)
{
    return __builtin_ffs(v) - 1;
}

unsigned number_of_bits_set(unsigned v)
{
    return __builtin_popcount(v);
}
```