static inline uint32_t next_pow_of_2(uint32_t x) { if ( is_pow_of_2(x) ) return x; x |= x>>1; x |= x>>2; x |= x>>4; x |= x>>8; x |= x>>16; return x+1; }
static uint8_t GetK(uint32_t size) { uint8_t k = 0; if(!is_pow_of_2(size)) { size = (size << 1); } //除最高为1位以外,其它位全部清0 while(size > 1) { k++; size = size >> 1; } return k; }