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