我有点困惑C++ {fmt} 库中的这个简短函数是如何工作的。
inline std::uint32_t digits10_clz(std::uint32_t n) {
std::uint32_t t = (32 - __builtin_clz(n | 1)) * 1233 >> 12;
return t - (n < powers_of_10_u32[t]) + 1;
}
我理解你可以近似log10
使用的逻辑,log2(__builtin_clz)
你需要调整精确值,但乘法对我来说是个谜。