| 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 | |