#define BITS_NEEDED(n) \
(((n) & 0x80000000u) ? 32 \
: ((n) & 0x40000000u) ? 31 \
: ((n) & 0x20000000u) ? 30 \
: ((n) & 0x10000000u) ? 29 \
: ((n) & 0x08000000u) ? 28 \
: ((n) & 0x04000000u) ? 27 \
: ((n) & 0x02000000u) ? 26 \
: ((n) & 0x01000000u) ? 25 \
: ((n) & 0x00800000u) ? 24 \
: ((n) & 0x00400000u) ? 23 \
: ((n) & 0x00200000u) ? 22 \
: ((n) & 0x00100000u) ? 21 \
: ((n) & 0x00080000u) ? 20 \
: ((n) & 0x00040000u) ? 19 \
: ((n) & 0x00020000u) ? 18 \
: ((n) & 0x00010000u) ? 17 \
: ((n) & 0x00008000u) ? 16 \
: ((n) & 0x00004000u) ? 15 \
: ((n) & 0x00002000u) ? 14 \
: ((n) & 0x00001000u) ? 13 \
: ((n) & 0x00000800u) ? 12 \
: ((n) & 0x00000400u) ? 11 \
: ((n) & 0x00000200u) ? 10 \
: ((n) & 0x00000100u) ? 9 \
: ((n) & 0x00000080u) ? 8 \
: ((n) & 0x00000040u) ? 7 \
: ((n) & 0x00000020u) ? 6 \
: ((n) & 0x00000010u) ? 5 \
: ((n) & 0x00000008u) ? 4 \
: ((n) & 0x00000004u) ? 3 \
: ((n) & 0x00000002u) ? 2 \
: ((n) & 0x00000001u) ? 1 \
: 0)