47 lines
1.8 KiB
C
47 lines
1.8 KiB
C
|
#ifndef _IOTMATH_H_INCLUDED
|
||
|
#define _IOTMATH_H_INCLUDED 1
|
||
|
#include <stdint.h>
|
||
|
|
||
|
/* 2的n次方数 */
|
||
|
#define roundup_pow_of_two(n) \
|
||
|
(1UL << \
|
||
|
( \
|
||
|
( \
|
||
|
(n) & (1UL << 31) ? 31 : \
|
||
|
(n) & (1UL << 30) ? 30 : \
|
||
|
(n) & (1UL << 29) ? 29 : \
|
||
|
(n) & (1UL << 28) ? 28 : \
|
||
|
(n) & (1UL << 27) ? 27 : \
|
||
|
(n) & (1UL << 26) ? 26 : \
|
||
|
(n) & (1UL << 25) ? 25 : \
|
||
|
(n) & (1UL << 24) ? 24 : \
|
||
|
(n) & (1UL << 23) ? 23 : \
|
||
|
(n) & (1UL << 22) ? 22 : \
|
||
|
(n) & (1UL << 21) ? 21 : \
|
||
|
(n) & (1UL << 20) ? 20 : \
|
||
|
(n) & (1UL << 19) ? 19 : \
|
||
|
(n) & (1UL << 18) ? 18 : \
|
||
|
(n) & (1UL << 17) ? 17 : \
|
||
|
(n) & (1UL << 16) ? 16 : \
|
||
|
(n) & (1UL << 15) ? 15 : \
|
||
|
(n) & (1UL << 14) ? 14 : \
|
||
|
(n) & (1UL << 13) ? 13 : \
|
||
|
(n) & (1UL << 12) ? 12 : \
|
||
|
(n) & (1UL << 11) ? 11 : \
|
||
|
(n) & (1UL << 10) ? 10 : \
|
||
|
(n) & (1UL << 9) ? 9 : \
|
||
|
(n) & (1UL << 8) ? 8 : \
|
||
|
(n) & (1UL << 7) ? 7 : \
|
||
|
(n) & (1UL << 6) ? 6 : \
|
||
|
(n) & (1UL << 5) ? 5 : \
|
||
|
(n) & (1UL << 4) ? 4 : \
|
||
|
(n) & (1UL << 3) ? 3 : \
|
||
|
(n) & (1UL << 2) ? 2 : \
|
||
|
(n) & (1UL << 1) ? 1 : \
|
||
|
(n) & (1UL << 0) ? 0 : -1 \
|
||
|
) + 1 \
|
||
|
) \
|
||
|
)
|
||
|
|
||
|
#endif
|