The arguments may be evaluated more than once.
Because this macro is implemented using bitwise operations, some
negative values can invoke undefined behavior. For example, the following
invokes undefined behavior: powerof2(INT_MIN);. Call it only with
unsigned types to be safe.